如何遍历一个字符串数组,以便每个值与其他每个值匹配一次且仅一次

时间:2015-02-25 20:04:15

标签: java loops

假设我有一个包含5个元素的字符串数组,我想遍历数组,以便我有元素[0]和元素[1]到元素[0]和元素[4]。

然后我想从元素[1]开始,对每个元素做同样的事情,但是丢弃任何匹配的分组。

例如arr[] {a,b,c,d,e}

(a-b),(a-c),(a-d),(a-e)

然后

(b-c),(b,d),(b,e)

然后

(c-d),),(c-e)

然后

(d-e)

由于

3 个答案:

答案 0 :(得分:2)

这样的事可能适合你:

List<String[]> result = new ArrayList<>();
String[] arr = {"a", "b", "c", "d", "e"};
for (int i = 0; i < arr.length; i++) {
    for (int j = i + 1; j < arr.length; j++) {
        result.add(new String[]{arr[i], arr[j]});
    }
}

将“字符串数组”添加到列表中的“collect”部分(即result.add(...))显然可以替换为代码所需的任何内容。这里的主要内容是您使用arr[i]arr[j]找到了“对”。

答案 1 :(得分:0)

您应该用数组的长度替换5

for (i=0; i<arr.length; i++)
    for (j=i+1; j<arr.length; j++)
        // arr[i] & arr[j]

答案 2 :(得分:0)

    String[] strings = {"a","b","c","d","e"};
    int j = 0;
    while (j < strings.length){
        int k = j + 1;
        while (k < strings.length){
            // if String array element j does not match with String array element k, do something like print the combiations or whatever you choose.
            if (!(strings[j].equals(strings[k]))) System.out.println("(" + strings[j] + "," + strings[k] + ")");
            k = k + 1;
        }
        j = j + 1;
    }