我正在尝试防止重复条目被添加到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)
| 归档时间: |
|
| 查看次数: |
6611 次 |
| 最近记录: |