package edu.berkeley.nlp.util; import java.util.AbstractSet; import java.util.Collection; import java.util.Iterator; import java.util.Set; /** * Union of two sets (sort of). Doesn't remove duplicates. Unmodifiable. * * @author adampauls * * @param <K> */ public class ConcatenationSet<K> extends AbstractSet<K> { @Override public boolean contains(Object arg0) { for (Set<K> set : sets) { if (set.contains(arg0)) return true; } return false; } private Collection<Set<K>> sets; private int size = 0; public ConcatenationSet(Collection<Set<K>> sets) { this.sets = sets; for (Set<K> set : sets) { size += set.size(); } } @Override public Iterator<K> iterator() { return new ConcatenationIterable<K>(sets).iterator(); } @Override public int size() { return size; } }