Java tutorial
package org.opencyc.util; import org.apache.commons.collections.*; import java.util.*; /** * Provides <tt>Collection</tt> utilities not otherwise provided by Jakarta Commons. All methods * are static. There is no need to instantiate this class.<p> * * @version $Id: OcCollectionUtils.java,v 1.5 2001/12/15 19:05:13 stephenreed Exp $ * @author Stephen L. Reed * * <p>Copyright 2001 Cycorp, Inc., license is open source GNU LGPL. * <p><a href="http://www.opencyc.org/license.txt">the license</a> * <p><a href="http://www.opencyc.org">www.opencyc.org</a> * <p><a href="http://www.sourceforge.net/projects/opencyc">OpenCyc at SourceForge</a> * <p> * THIS SOFTWARE AND KNOWLEDGE BASE CONTENT ARE PROVIDED ``AS IS'' AND * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENCYC * ORGANIZATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE AND KNOWLEDGE * BASE CONTENT, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ public class OcCollectionUtils { /** * Returns <tt>true</tt> iff the given {@link Collection}s. * have any elements in common. Performs HashSet search for * larger collections. * * @param a the first collection considered for intersection * @param b the second collection considered for intersection * @return <tt>true</tt> if the given {@link Collection}s. * have any elements in common. */ public static boolean hasIntersection(final Collection a, final Collection b) { if (a.size() < 50 && b.size() < 50) { Iterator it = a.iterator(); while (it.hasNext()) if (b.contains(it.next())) return true; } else if (a.size() < b.size()) { HashSet bSet = new HashSet(b); Iterator it = a.iterator(); while (it.hasNext()) if (bSet.contains(it.next())) return true; } else { HashSet aSet = new HashSet(a); Iterator it = b.iterator(); while (it.hasNext()) if (aSet.contains(it.next())) return true; } return false; } /** * Returns <tt>true</tt> iff the given {@link Collection} has any * duplicated elements. * * @param collection the collection under consideration for having duplicate elements * @return <tt>true</tt> the given {@link Collection} has any duplicated elements */ public static boolean hasDuplicates(final Collection collection) { HashSet aSet = new HashSet(collection); return collection.size() != aSet.size(); } }