【问题标题】:Java: Generating a custom sets of elementsJava:生成自定义元素集
【发布时间】:2014-03-27 10:55:07
【问题描述】:

我需要一个简单的 java 程序,它可以为我生成一个集合的自定义集合,比如 {'1','2','3','4'}。结果应该是: {'1','2'},{'2','3'},{'3','4'},{'1','2','3'},{'2',' 3','4'}。

我已经尝试过 powerset 的代码,但输出并不理想。如果代码可以是这样的,那将是可观的:

for(j=2;j<set.size()-1;j++)
{
for(i=0;i<set.size()-1;i++)
{
//a[i],a[i+1] when j=2
//a[i],a[i+1],a[i+2] when j=3
}
} 

我知道 .size() 用于 ArrayList 而 a[i] 用于简单数组,我已经编写了这两种方法,因为任何方法都可以!提前致谢!! :)

【问题讨论】:

  • 也许反过来,从 i =0...n, j=0...n 开始,并尝试添加 go i=0...n, j=i +1....n,并且有从 0 到 i 和从 j 到 n 的子数组

标签: java arrays set powerset


【解决方案1】:

这段代码应该打印出你想要的值:

    final int[] values = {1, 2, 3, 4};
    for (int size = 2; size < values.length; size++) {
        for (int i = 0; i + size <= values.length; i++) {
            for (int j = 0; j <= size - 1; j++) {
                System.out.print(values[i + j]);
            }
            System.out.println();
        }
    }

从示例中,我们看到您要打印长度大于 1 且小于总集的值集,因此以下行的作用是:

for (int size = 2; size &lt; values.length; size++) {

之后我们计算子集的起始索引,注意不要遇到 IndexArrayOutOfBounds 异常(见下一行)

for (int i = 0; i + size <= values.length; i++) {

从那里我们只打印从 i 索引开始的值,子集长度为 size

for (int j = 0; j <= size - 1; j++)

【讨论】:

  • 这段代码正是我需要的。非常感谢!! ^-^
【解决方案2】:

这是生成所需结果的示例代码:

    int[] array = { 1, 2, 3, 4 };
    int size = 2;
    for (int j = 0; j < array.length; j++) {
        for (int i = 0; i <= array.length - size; i++) {
            int[] temp = Arrays.copyOfRange(array, i, i + size);
            for (int x : temp) {
                System.out.print(x + ",");
            }
            System.out.println();
        }
        size++;
        if (size == array.length) {
            break;
        }
    }

输出:

1,2,
2,3,
3,4,
1,2,3,
2,3,4,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 2019-10-16
    • 2023-04-05
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    相关资源
    最近更新 更多