Logo

Programming-Idioms

History of Idiom 119 > diff from v33 to v34

Edit summary for version 34 by canonical.chris:
[Java] add two missing import statements

Version 33

2018-04-07, 10:25:05

Version 34

2018-04-07, 10:26:14

Idiom #119 Deduplicate list

Remove duplicates from list x.
Explain if original order is preserved.

Illustration

Idiom #119 Deduplicate list

Remove duplicates from list x.
Explain if original order is preserved.

Illustration
Extra Keywords
deduplicate dupe dupes redundant redundancy
Extra Keywords
deduplicate dupe dupes redundant redundancy
Imports
import java.util.HashSet;
Imports
import java.util.HashSet;
import java.util.Set;
import java.util.Iterator;
Code
final HashSet<T> seen = new HashSet<T>();
final Iterator<T> listIt = x.iterator();
while (listIt.hasNext()) {
  final T curr = listIt.next();
  if (seen.contains(curr)) {
    listIt.remove();
  } else {
    seen.add(curr);
  }
}
Code
final HashSet<T> seen = new HashSet<T>();
final Iterator<T> listIt = x.iterator();
while (listIt.hasNext()) {
  final T curr = listIt.next();
  if (seen.contains(curr)) {
    listIt.remove();
  } else {
    seen.add(curr);
  }
}
Comments bubble
Preserves the order of the items.
Upon first occurrence, store item in seen; all future occurrences of the item are removed from the list efficiently via the iterator listIt, removing the last-returned item.
Requires extra memory for the hash-set.
Comments bubble
Preserves the order of the items.
Upon first occurrence, store item in seen; all future occurrences of the item are removed from the list efficiently via the iterator listIt, removing the last-returned item.
Requires extra memory for the hash-set.
Doc URL
https://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html
Doc URL
https://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html