Monday, 14 August 2017

How to retain/get only the duplicate elements in a list ~ foundjava

Let’s say you have a list of duplicate (and non-duplicate) items, and you want a new collection with only the duplicate items in there. The easiest way is to extend the HashSet.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class DuplicatesOnlySet<E> extends HashSet<E>
{
    private final Set<E> uniques = new HashSet<E>();
 
    public  DuplicatesOnlySet(Collection<? extends E> c)
    {
        super.addAll(c);
    }
 
    @Override
    public boolean add(E e)
    {               
        if(!this.uniques.add(e))
             return super.add(e);
 
    return false;
    }
}
Call it like
1
List<String> duplicates = new ArrayList<String>(new DuplicatesOnlySet<String>(original)) ;
where original is the Collection with the duplicate items.

No comments:

Post a Comment