如何从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?