blob: 2c68536c518de15fff8fba088572c6fd46646644 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2007 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0, which accompanies this distribution
* and is available at http://www.eclipse.org/legal/epl-v10.html.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.utility.internal;
/**
* A collection that allows duplicate elements.
* <p>
* The <code>Bag</code> interface places additional stipulations,
* beyond those inherited from the <code>java.util.Collection</code> interface,
* on the contracts of the <code>equals</code> and <code>hashCode</code> methods.
*
* @version 1.00 Jan-2002
* @see java.util.Collection
* @see HashBag
*/
public interface Bag<E> extends java.util.Collection<E> {
/**
* Compares the specified object with this bag for equality. Returns
* <code>true</code> if the specified object is also a bag, the two bags
* have the same size, and every member of the specified bag is
* contained in this bag with the same number of occurrences (or equivalently,
* every member of this bag is contained in the specified bag with the same
* number of occurrences). This definition ensures that the
* equals method works properly across different implementations of the
* bag interface.
*/
boolean equals(Object o);
/**
* Returns the hash code value for this bag. The hash code of a bag is
* defined to be the sum of the hash codes of the elements in the bag,
* where the hashcode of a <code>null</code> element is defined to be zero.
* This ensures that <code>b1.equals(b2)</code> implies that
* <code>b1.hashCode() == b2.hashCode()</code> for any two bags
* <code>b1</code> and <code>b2</code>, as required by the general
* contract of the <code>Object.hashCode</code> method.
*/
int hashCode();
}