package demo01;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class HashMapClass {
public static void print(HashMap h) {
for (Map.Entry e: h.entrySet()) {
//Map.Entry类型的getKey()方法可以取出对象的key,getValue()方法可以取出对象的value
System.out.println(e.getKey() + ": " + e.getValue());
}
}
public static void main(String[] args) {
//注意:如果想用HashMap中的key存储自定义类型,和HashSet中存储自定义类型相同,需要重写对象中的hashCode方法和equals方法。
//还可以创建LinkedHashMap类型,和HashMap几乎相同,但是LinkedHashMap底层是一个链表和一个哈希表,链表的作用是记录元素第一次出现的位置,因此元素是有序的。
HashMap h = new HashMap<>();
//public V put(K key, V value) 给key:value放入字典中
h.put(1, "Momday");
h.put(2, "Tuesday");
h.put(3, "Wenesday");
System.out.println("初始时字典h:");
print(h);
//public int size() 查看字典的大小
System.out.println("字典h的大小为:" + h.size());
//当插入的键值对的key已经存在于字典中,如果值不同,则会覆盖之前的值。
h.put(1, "Monday");
//public V replace(K key, V value) 将键对应的值进行修改。
h.replace(3, "wednesday");
System.out.print("修改后字典h:");
System.out.println(h);
//public boolean containsKey(Object key) 查看字典中是否包含key
System.out.println("字典h的key是否包含4:" + h.containsKey(4));
//public boolean containsValue(Object value) 查看字典中是否包含value
System.out.println("字典h的value是否包含星期二:" + h.containsValue("Tuesday"));
//public V get(Object key) 获取字典中key对应的value
System.out.print("星期三的英文单词是:" + h.get(3));
//public V getOrDefault(Object key, V defaultValue) 获取字典中key对应的value,如果没有则返回默认value
System.out.print("星期四的英文单词是:" + h.getOrDefault(4, "Thursday"));
//public boolean remove(Object key, Object value) 移除字典中键值对,如果不存在则不移除。
System.out.print("字典h删除3:Wenesday是否成功:" + h.remove(3, "Wenesday"));
//public V remove(Object key) 移除字典中key对应的键值对,如果不存在则不移除。
h.remove(3);
System.out.print("删除星期三的单词后字典h:");
System.out.println(h);
//public Set keySet() 获取字典中key的Set集合
Set hKey = h.keySet();
System.out.print("字典h的key:");
System.out.println(hKey);
//public Collection values() 获取字典中value的Collection集合
Collection hValue = h.values();
System.out.print("字典h的value:");
System.out.println(hValue);
//public Set> entrySet() 获取字典中的键值对的Set集合,其中每一个对象是一个Map.Entry类型
Set> e = h.entrySet();
System.out.print("字典h的key & value:");
System.out.println(e);
HashMap h1 = new HashMap<>();
h1.put(3, "Wednesday");
h1.put(4, "Thursday");
h1.put(5, "Friday");
System.out.print("初始时字典h1:");
System.out.println(h1);
//public void putAll(Map extends K, ? extends V> m) 将字典m合并到当前字典中,重复key对应的value会被替换
h.putAll(h1);
System.out.print("h合并h1后:");
System.out.println(h);
//public void clear() 清空字典
h.clear();
System.out.print("移除所有元素后,字典h:");
System.out.println(h);
//public boolean isEmpty() 判断字典是否为空
System.out.println("字典h是否为空:" + h.isEmpty());
System.out.println("字典h的大小为:" + h.size());
}
}