整数的ArrayList的ArrayList不应接受重复项

时间:2019-07-18 00:21:49

标签: java arraylist

目标是在我的整数数组列表“ listResults”的数组列表中没有重复项。 在这里,我遍历元素列表“ listOfElements”,如果该列表中两个元素的总和等于目标,则将两个元素的索引存储在ArrayList“ pair”中。然后,我将该ArrayList添加到ArrayList“ listResults”的列表中并继续进行迭代。 最后,我可能会得到包含一个或多个arrayLists的listResults。但是我不希望它包含重复的内容,例如[2,3]和[3,2]或[4,0]和[0,4]

int target = 60;

ArrayList<ArrayList<Integer>> listResults = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> listOfElements = new ArrayList<Integer>();

listOfElements.add(1);
listOfElements.add(10);
listOfElements.add(25);
listOfElements.add(35);
listOfElements.add(60);

for (int i = 0; i < listOfElements.size(); i++) {
    for (int j = 0; j < listOfElements.size(); j++) {
        if (listOfElements.get(i) + listOfElements.get(j) == target) {
            ArrayList<Integer> pair = new ArrayList<Integer>();
            pair.add(i);
            pair.add(j);
            listResults.add(pair);
        }
    }
}

System.out.println(listResults);

基于当前代码,输出为:[[2,3],[3,2]],但这是不可接受的,因为[2,3]和[3,2]是重复项。应该只允许[2,3],因为它是要添加到ArrayList的第一个。

2 个答案:

答案 0 :(得分:2)

您不应检查已访问的元素。在您的内部for循环中,

更改

int j = 0;

int j = i + 1;

答案 1 :(得分:0)

如果条件为真,请使用break语句。