HashMap如何对ArrayList <integer>使用equals()?

时间:2018-01-12 18:18:35

标签: java arraylist hashmap

我将一个ArrayList添加到HashMap中,然后按如下方式更改原始列表:

import java.util.*;

public class HashSetCheck{

    public static void main(String[] args){
        HashMap<ArrayList<Integer>, Integer> set = new HashMap<ArrayList<Integer>, Integer>();
        ArrayList<Integer> check = new ArrayList<Integer>();
        set.put(check, 0);
        check.add(1);
        ArrayList<Integer> sep = new ArrayList<Integer>();
        sep.add(1);
        System.out.println(set.containsKey(check));
        System.out.println(set.containsKey(sep));
    }

}

在这两种情况下,程序都会输出错误。

我查看了这个question,并知道HashMap将引用存储为密钥。此外,文档指出containsKey(key)将检查内部所有值k的以下条件:

  

(key == null?k == null:key.equals(k))

对于第一种情况,equals()不应该是真的。它是相同的参考,它是相同的值。否则,如何为ArrayList实现equals()?

0 个答案:

没有答案