How do I remove repeated elements from ArrayList?

I have an ArrayList of Strings , and I want to remove repeated strings from it. How can I do this?


If you don't want duplicates in a Collection , you should consider why you're using a Collection that allows duplicates. The easiest way to remove repeated elements is to add the contents to a Set (which will not allow duplicates) and then add the Set back to the 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);

Of course, this destroys the ordering of the elements in the ArrayList .


Although converting the ArrayList to a HashSet effectively removes duplicates, if you need to preserve insertion order, I'd rather suggest you to use this variant

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

Then, if you need to get back a List reference, you can use again the conversion constructor.


In Java 8:

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

Please note that the hashCode-equals contract for list members should be respected for the filtering to work properly.

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

上一篇: Java:泛型ArrayLists比迭代中的LinkedLists更快吗?

下一篇: 如何从ArrayList中删除重复的元素?