Java Hash Calculate hashFNV32(int val)

Here you can find the source of hashFNV32(int val)

Description

32 bit FNV hash.

License

Open Source License

Parameter

Parameter Description
val The value to hash.

Return

The hash value

Declaration

public static int hashFNV32(int val) 

Method Source Code

//package com.java2s;
/**/*  w  w  w  .  j a v a2s .c  o  m*/
 * Copyright (c) 2010 Yahoo! Inc. All rights reserved.
 *
 * 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. See accompanying
 * LICENSE file.
 */

public class Main {
    private static final int FNV_OFFSET_BASIS_32 = 0x811c9dc5;
    private static final int FNV_PRIME_32 = 16777619;

    /**
     * 32 bit FNV hash. Produces more "random" hashes than (say) String.hashCode().
     *
     * @param val The value to hash.
     * @return The hash value
     */
    public static int hashFNV32(int val) {
        // from http://en.wikipedia.org/wiki/Fowler_Noll_Vo_hash
        int hashVal = FNV_OFFSET_BASIS_32;

        for (int i = 0; i < 4; i++) {
            int octet = val & 0x00ff;
            val = val >> 8;

            hashVal = hashVal ^ octet;
            hashVal = hashVal * FNV_PRIME_32;
        }
        return Math.abs(hashVal);
    }
}

Related

  1. hashDisp(long hash)
  2. hashDouble(double val)
  3. hashEqules(Object source, Object obj)
  4. hashFloat(float value)
  5. hashFloatBits(long hash, float f)
  6. hashFNV64(byte[] bytes)
  7. hashForEqual(Class clazz)
  8. hashHC(int i)
  9. hashHsieh(int init, Object... vals)