- HashMap和HashSet的区别
HashSet底层就是基于HashMap 实现的。(HashSet的源码非常非常少,因为除了 clone()、writeObject()、readObject()是HashSet自己不得不实现之外,其他方法都是直接调用 HashMap 中的方法)。HashMap需要key、value两个值,但是HashSet可是只需存放一个值。HashSet的add方法,这里把值放到了map的key上面,而value元素默认Object对象。
1.HashMap实现了map接口,HashSet实现了set接口。
2.HashMap存储键对(key-value),使用put方法加进去。HashSet仅存储对象,使用add。
3.HashMap不允许有重复的key,但是允许有重复的value。HashSet不允许有重复对象。
4.HashMap比较快,因为key唯一啊。相对来说HashSet就慢一些了。
@Test
public void HashMapTest(){
System.out.println("Test01.HashMapTest");
System.out.println();
HashMap<Object, Object> hashMap = new HashMap<>();
hashMap.put(01,100);
hashMap.put("first","one");
hashMap.put(02,99);
hashMap.put("second","two");
hashMap.put(01,98);
// System.out.println(hashMap.hashCode());
System.out.println(hashMap.isEmpty());//看看这个链表是不是空的
System.out.println(hashMap.size());//hashMap的大小,里面有多少元素
System.out.println(hashMap);//输出这个链表
System.out.println(hashMap.keySet());//这只是得到hashMap的key
System.out.println(hashMap.containsKey(01));//看看这里面是否包含01这个key
System.out.println(hashMap.get(01));//通过key来拿到这个value
System.out.println(hashMap.containsValue(100));//看看这里面的value是否包含100
System.out.println(hashMap.entrySet());//这是遍历整个hashMap
hashMap.remove(01);
System.out.println(hashMap.entrySet());//这是遍历整个hashMap
hashMap.replace(02,20);//替换里面的key和value,用02-20来替换里面的02-99
System.out.println(hashMap.entrySet());//这是遍历整个hashMap
hashMap.remove("first","one");//删除里面的元素,通过key-value
System.out.println(hashMap.entrySet());//这是遍历整个hashMap
hashMap.remove("second");//删除里面的元素,仅仅通过key来删除
System.out.println(hashMap.entrySet());//这是遍历整个hashMap
//System.out.println(hashMap.hashCode());
}
@Test
public void hashtable(){
Hashtable<Object, Object> hashtable = new Hashtable<>();
hashtable.put(1,2);
hashtable.put(1,100);//以为value是相同的吗,所以把2就给覆盖了
hashtable.put(2,99);
hashtable.put(3,98);
System.out.println(hashtable);//他的遍历是反着来的,map是正着来的
System.out.println(hashtable.isEmpty());//看看是否为空
System.out.println(hashtable.size());//看看里面有多少元素
System.out.println(hashtable.get(1));//通过key来得到value
System.out.println(hashtable.containsKey(2));//看看这里面的key有没有2这个元素
System.out.println(hashtable.contains(100));//看看里面有没有100
System.out.println(hashtable.entrySet());//entrySet遍历HashTable
System.out.println(hashtable.remove(1));//通过key来移除元素
System.out.println(hashtable.entrySet());//entrySet遍历HashTable
}