equals和hashcode

1.equals相同,其hashcode必然相同

2.equals是比较两个内容是否相同;==是用来判断两个对象是否是同一个对象。

3.默认的hashcode 是根据内存地址计算

 1 package text;
 2 import java.util.ArrayList;
 3 import java.util.List;
 4 import java.util.HashMap;
 5 import java.util.Map;
 6 
 7 
 8 public class TestEquals{
 9     public static void main(String[] args){
10         List list=new ArrayList();//ArrayList是有序可重复的,equals比较
11         String s1=new String("aaa");
12         String s2=new String("aaa");
13         list.add(s1);
14         list.add(s2);
15         System.out.println(list.size());
16         
17         Map map=new HashMap();//底层实现是数组+链表。数组中的位置由hashcode来确定,键不能重复
18         //键不能重复
19         map.put(s1,"AAA");//aaa--->AAA
20         map.put(s2,"BBBBBBB");//aaa---->BBBBBBBB
21         System.out.println(map.get("aaa"));//键相同的时候,表示在数组中(桶)的位置相同,
22         //(hashcode相同)。然后在比较链表中键equals,当相同时,后面的值就会覆盖前面的值。
23     }
24 }
1 运行结果:
2 2
3 BBBBBBB
原文地址:https://www.cnblogs.com/qingsheng/p/9135585.html