dgh*_*htr 5 java list duplicates
我开发了一个数组列表.
ArrayList<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("3");
list.add("5");
list.add("6");
list.add("7");
list.add("7");
list.add("1");
list.add("10");
list.add("2");
list.add("12");
Run Code Online (Sandbox Code Playgroud)
但如上所述它包含许多重复元素.我想删除该列表中的所有重复项.为此我想首先我需要将列表转换为集合.
Java是否提供将列表转换为集合的功能?是否有其他设施可以从列表中删除重复项?
Ted*_*opp 24
您可以转换为Set:
Set<String> aSet = new HashSet<String>(list);
Run Code Online (Sandbox Code Playgroud)
或者您可以转换为一个集合并返回到列表:
list = new ArrayList<String>(new HashSet<String>(list));
Run Code Online (Sandbox Code Playgroud)
然而,这两者都不可能保持元素的顺序.要保留顺序,可以HashSet在迭代时使用a 作为辅助结构:
List<String> list2 = new ArrayList<String>();
HashSet<String> lookup = new HashSet<String>();
for (String item : list) {
if (lookup.add(item)) {
// Set.add returns false if item is already in the set
list2.add(item);
}
}
list = list2;
Run Code Online (Sandbox Code Playgroud)
在重复的情况下,只有第一次出现在结果中.如果您只想出现最后一次出现,那就更难了.我将通过反转输入列表,应用上述内容,然后反转结果来解决它.
这个:
Set<String> set = new HashSet<String>();
set.addAll(list);
list.clear();
list.addAll(set);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44385 次 |
| 最近记录: |