如何从ArrayList中删除重复的元素?

我有一个Strings ArrayList ,我想从中删除重复的字符串。 我怎样才能做到这一点?


如果你不想在一个Collection重复,你应该考虑为什么你使用一个允许重复的Collection 。 删除重复元素的最简单方法是将内容添加到Set (不允许重复),然后将Set添加回ArrayList

List<String> al = new ArrayList<>();
// add elements to al, including duplicates
Set<String> hs = new HashSet<>();
hs.addAll(al);
al.clear();
al.addAll(hs);

当然,这破坏了ArrayList元素的排序。


尽管将ArrayList转换为HashSet有效地删除重复项,但如果您需要保留插入顺序,我宁愿建议您使用此变体

// list is some List of Strings
Set<String> s = new LinkedHashSet<>(list);

然后,如果您需要取回List引用,则可以再次使用转换构造函数。


在Java 8中:

List<String> deduped = list.stream().distinct().collect(Collectors.toList());

请注意,应该遵守列表成员的hashCode-equals协定,以使筛选正常工作。

链接地址: http://www.djcxy.com/p/19985.html

上一篇: How do I remove repeated elements from ArrayList?

下一篇: How to decide which collection should be used from List Set?