|
Groovy example source code file (HashCodeHelper.java)
The Groovy HashCodeHelper.java source code
/*
* Copyright 2008 the original author or authors.
*
* Licensed 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.codehaus.groovy.util;
import java.util.Arrays;
/**
* A utility class to help calculate hashcode values
* using an algorithm similar to that outlined in
* "Effective Java, Joshua Bloch, 2nd Edition".
*/
public class HashCodeHelper {
private static final int SEED = 127;
private static final int MULT = 31;
public static int initHash() {
return SEED;
}
public static int updateHash(int current, boolean var) {
return shift(current) + (var ? 1 : 0);
}
public static int updateHash(int current, char var) {
return shift(current) + (int) var;
}
public static int updateHash(int current, int var) {
return shift(current) + var;
}
public static int updateHash(int current, long var) {
return shift(current) + (int) (var ^ (var >>> 32));
}
public static int updateHash(int current, float var) {
return updateHash(current, Float.floatToIntBits(var));
}
public static int updateHash(int current, double var) {
return updateHash(current, Double.doubleToLongBits(var));
}
public static int updateHash(int current, Object var) {
if (var == null) return updateHash(current, 0);
if (var.getClass().isArray())
return shift(current) + Arrays.hashCode((Object[]) var);
return updateHash(current, var.hashCode());
}
public static int updateHash(int current, boolean[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
}
public static int updateHash(int current, char[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
}
public static int updateHash(int current, byte[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
}
public static int updateHash(int current, short[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
}
public static int updateHash(int current, int[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
}
public static int updateHash(int current, long[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
}
public static int updateHash(int current, float[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
}
public static int updateHash(int current, double[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
}
private static int shift(int current) {
return MULT * current;
}
}
Other Groovy examples (source code examples)Here is a short list of links related to this Groovy HashCodeHelper.java source code file: |
Other websites by Alvin Alexander:
Life/living in Alaska (OneMansAlaska.com)
How I Sold My Business (HowISoldMyBusiness.com)
Copyright 1998-2011 Alvin Alexander, devdaily.com
All Rights Reserved.