List.hashCode()

获取列表的哈希值

定义

public int hashCode()

返回值

返回列表的哈希值

说明

本方法由 Collection<E> 接口的 hashCode() 方法指派

本方法重写了 Object 类的 hashCode() 方法

列表哈希值的计算流程如下:

int hashCode = 1;
for (E e : list)
    hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());

注意事项

要确保 list1.equals(list2) 意味着对于任意两个列表 list1list2 要有 list1.hashcode () == list2.hashcode(), 这是 Object.hashCode() 的通用契约所要求的。

示例

package com.yi21.list;

import java.util.ArrayList;
import java.util.List;

public class Yi21ListHashCode {

    public static void main(String[] args) {
        
        List<String> list = List.of("Hello", "World", "21yi");
        System.out.println("list 的哈希值: " + list.hashCode());

        ArrayList<String> newList = new ArrayList<>();
        newList.add("Hello");
        newList.add("World");
        newList.add("21yi");
        System.out.println("newList 的哈希值: " + newList.hashCode());
        
        System.out.println("自定义哈希值算法: " + myHashCode(list));
    }

    private static <E> int myHashCode(List<E> list) {
        int hashCode = 1;
        for (E e : list)
            hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
        return hashCode;
    }

}

执行结果为 :

list 的哈希值: 773717230
newList 的哈希值: 773717230
自定义哈希值算法: 773717230