比较同一个List Java中的元素

时间:2014-05-08 07:25:07

标签: java list arraylist

我想比较相同List (The List "list)中的元素,如果它们是相同的打印出来的一行,我对编程很新,我还没有完全理解差异列表数组之间以及使用它们时。

有人建议使用下面的代码,虽然它没有任何内容正在打印出来。由于我的数组中有两对,我希望至少打印一次。任何帮助都将非常感谢!

                        List<Double> list = new ArrayList<Double>();

                        while (search.find()){ 
                            list.add(Double.parseDouble(search.group(1)));
                        }


                        for(int i= 0 ; i < list.size()-1; i++){
                            //System.out.println(list.get(i));  // Successfully prints out all doubles in the SHADING:BUILDING:DETAILED class
                            for(int k = i+1 ; k < list.size() ; k++){
                                if(list.get(i) == list.get(k)){
                                    System.out.println(i + "and" + k + "are pairs");
                                }
                            }
                        }           
                    }
                }

4 个答案:

答案 0 :(得分:2)

你对比较进行编码的方式会重演。此外,这不是您访问列表中元素的正确方法,我很害怕。

例如,假设您有i = 0(例如值为2.0)和k = 2(值5.2),但稍后您有i = 2(5.2)和k = 0(2.0),这是相同。我建议你这样做,这可以避免这种重复。

for (int i = 0; i < list.size()-1; i++) 
   for (int k = i+1; k < list.size(); k++) 
      if(list.get(i) == list.get(k))
         System.out.println(i + " and "+ k +" are pairs");

当然,您必须确保列表的大小大于1,否则会抛出OutOfBoundsException。 希望这有助于^^

编辑#2。编辑#2 如果它包含一个null-safe equals:

,请尝试使用以下命令
if(Objects.equals(list.get(i), list.get(k)))

答案 1 :(得分:1)

首先,您应该修复:

if(list[i]=  list[k]){

成为:

if(list.get(i) == list.get(k)){

其次,您应该添加一个条件以确保i != k(换句话说 - 您不会将元素与自身进行比较。

第三,您不能像以下那样访问列表:list[i]您应该使用list.get(i)

答案 2 :(得分:1)

您可以使用以下代码:

public void compareElementToList() {

    List<Double> list = Arrays.asList(1.0, 1.2, 1.3, 1.4, 1.0);

    for (int i = 0; i < list.size(); i++) {
        Double itemI = list.get(i);
        for (int j = 0; j < list.size(); j++) {
            Double itemJ = list.get(j);
            if (i != j) {
                if (itemI.compareTo(itemJ) == 0) {
                    System.out.println("Element " + i + " and " + j + " are pairs.");
                } else {
                    System.out.println("There are no even elements.");
                }
            } else {
                System.out.println("Element omited.");
            }
        }
    }

}

答案 3 :(得分:0)

列表基本上只是一个可变长度数组。您可以使用get(int)方法从中获取数据,该方法从列表中获取第n个值并设置(int,Object)以将第n个值设置为给定对象。

javadocs是你的朋友。 http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html