从列表中删除重复元素

2024-05-05

我开发了一个数组列表。

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");

但如上所示,它包含许多重复元素。我想从该列表中删除所有重复项。为此,我认为首先需要将列表转换为集合。

Java是否提供将列表转换为集合的功能?是否有其他工具可以从列表中删除重复项?


您可以使用以下方法转换为 Set:

Set<String> aSet = new HashSet<String>(list);

或者您可以使用以下命令转换为集合并返回列表:

list = new ArrayList<String>(new HashSet<String>(list));

然而,这两种方法都不太可能保留元素的顺序。为了保持顺序,您可以使用HashSet作为迭代时的辅助结构:

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;

如果出现重复项,则结果中只会出现第一次出现的情况。如果您只想出现最后一次出现的情况,那就是一个更棘手的问题。我会通过反转输入列表,应用上面的内容,然后反转结果来解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从列表中删除重复元素 的相关文章

随机推荐