From e47b5cf5409d61daebdab77d308128c06ec7ec2e Mon Sep 17 00:00:00 2001 From: Henri Yandell Date: Tue, 15 Sep 2009 05:55:04 +0000 Subject: [PATCH] Merging from -r468106:814127 of collections_jdk5_branch - namely where this code was generified; mostly in r738956. Also see the following revisions: ------------------------------------------------------------------------ r643590 | skestle | 2008-04-01 14:36:59 -0700 (Tue, 01 Apr 2008) | 1 line Added Equator interface for COLLECTIONS-242. ------------------------------------------------------------------------ git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/trunk@815047 13f79535-47bb-0310-9956-ffa450edef68 --- .../commons/collections/functors/Equator.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/java/org/apache/commons/collections/functors/Equator.java diff --git a/src/java/org/apache/commons/collections/functors/Equator.java b/src/java/org/apache/commons/collections/functors/Equator.java new file mode 100644 index 000000000..83fa98643 --- /dev/null +++ b/src/java/org/apache/commons/collections/functors/Equator.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. You may obtain a + * copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable + * law or agreed to in writing, software distributed under the License is distributed on an "AS IS" + * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License + * for the specific language governing permissions and limitations under the License. + */ +package org.apache.commons.collections.functors; + +import org.apache.commons.collections.map.HashedMap; + +/** + *

+ * An equation function, which determines equality between objects of type T. + *

+ *

+ * It is the functional sibling of {@link java.util.Comparator}; {@link Equator} is to + * {@link Object} as {@link java.util.Comparator} is to {@link java.lang.Comparable}. + *

+ * + * @param the types of object this {@link Equator} can evaluate. + * @author Stephen Kestle + * @since 4.0 + */ +public interface Equator { + /** + * Evaluates the two arguments for their equality. + * + * @param o1 the first object to be equated. + * @param o2 the second object to be equated. + * @return whether the two objects are equal. + */ + boolean equate(T o1, T o2); + + /** + * Calculates the hash for the object, based on the method of equality used in the equate + * method. This is used for classes that delegate their {@link #equals(Object)} method to an + * Equator (and so must also delegate their {@link #hashCode()} method), or for implementations + * of {@link HashedMap} that use an Equator for the key objects. + * + * @param o the object to calculate the hash for. + * @return the hash of the object. + */ + int hash(T o); +}