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