/* * Copyright 2013 Guidewire Software, Inc. */ package gw.util; import java.util.Collection; import java.util.HashSet; public class PredicatedSet<E> extends HashSet<E> { private final Predicate _predicate; public PredicatedSet(int initialCapacity, Predicate predicate) { super(initialCapacity); _predicate = predicate; } public PredicatedSet(Predicate predicate) { _predicate = predicate; } public boolean add(E o) { if (_predicate.evaluate(o)) { return super.add(o); } return false; } public boolean addAll(Collection<? extends E> c) { boolean changed = false; for(E e: c) { if (_predicate.evaluate(e)) { if (super.add(e)) { changed = true; } } } return changed; } }