package org.smoothbuild.util; import java.util.HashSet; import java.util.Set; import com.google.common.collect.HashMultiset; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Multiset; public class DuplicatesDetector<T> { private final Multiset<T> set = HashMultiset.create(); private boolean hasDuplicates = false; public boolean addValue(T value) { boolean alreadyContains = set.contains(value); hasDuplicates = hasDuplicates || alreadyContains; set.add(value); return alreadyContains; } public boolean hasDuplicates() { return hasDuplicates; } public Set<T> getDuplicateValues() { Set<T> result = new HashSet<>(); for (Multiset.Entry<T> entry : set.entrySet()) { if (1 < entry.getCount()) { result.add(entry.getElement()); } } return result; } public Set<T> getUniqueValues() { return ImmutableSet.copyOf(set.elementSet()); } }