JAVA:防止重复条目到ArrayList

use*_*526 8 java arraylist

我正在尝试防止重复条目被添加到ArrayList,因为在读取文件的每一行时正在填充列表.文件的每一行都采用"node1 node2"格式(制表符分隔符).这里的副本可以是"node1 node2"或"node2 node1".这是我尝试执行此操作的代码:

while((line = bufferedReader.readLine()) != null) {

     String delimiter = "\t";
     String[] tempnodelist;  
     tempnodelist = line.split(delimiter);

     for (int i=0; i <= edgesnumber; i++) {   //edgesnumber = edges.size()

         if (tempnodelist[0] && tempnodelist[1] != edges.get(i)) {

             edges.add(line);

            }
        }

     nodes.add(tempnodelist[0]);  
     nodes.add(tempnodelist[1]); //intial intended use of tempnodelist.
Run Code Online (Sandbox Code Playgroud)

}

因为我已经拆分每一行来制作每个节点的HashSet,所以我试图用它来检查重复项.目前我似乎无法正确使用语法.我如何检查ArrayList的先前条目是否有重复项,并防止它们被添加,whist继续填充ArrayList?这个代码目前有什么问题?

如果有任何不清楚的地方,请询问任何问题,

提前致谢!

Ren*_*ink 14

使用LinkedHashSet然后将其转换为ArrayList,因为a LinkedHashSet具有可预测的迭代顺序(插入顺序),它是一个Set.

例如

LinkedHashSet<String> uniqueStrings = new LinkedHashSet<String>();

uniqueStrings.add("A");
uniqueStrings.add("B");
uniqueStrings.add("B");
uniqueStrings.add("C");
uniqueStrings.add("A");

List<String> asList = new ArrayList<String>(uniqueStrings);
System.out.println(asList);
Run Code Online (Sandbox Code Playgroud)

将输出

 [A, B, C]
Run Code Online (Sandbox Code Playgroud)