比较同一List Java中的元素

Ant*_*mes 1 java list arraylist

我想比较相同的元素,List (The List "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");
                                }
                            }
                        }           
                    }
                }
Run Code Online (Sandbox Code Playgroud)

fas*_*aas 7

您对比较进行编码的方式会重复。此外,恐怕这不是您访问列表中元素的正确方式。

例如,假设您有 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");
Run Code Online (Sandbox Code Playgroud)

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

编辑 #2 如果它包含一个空安全等于,请尝试使用以下内容:

if(Objects.equals(list.get(i), list.get(k)))
Run Code Online (Sandbox Code Playgroud)