HashMap介绍
1. HashMap无序且不安全的数据结构,是以key-value对的形式存储的,key值是唯一的(可以为null)一个key只能对应一个value,但Value是可以重复的;
2. ConcurrentHashMap 线程安全,不支持 key 或者 value 为 null ;
3. LinkedHashMap 遍历按照插入顺序。
HashMap遍历
Map map = new HashMap<>(3);
map.put("a","a是第一个字母");
map.put("","允许有一个key为null");//注:""空字符串不是null,ConcurrentHashMap的key或者value不支持null
map.put("b","b是第二个字母");
//遍历方法1: 先遍历key , 再取出value
System.out.println("method 1 start");
for (String key : map.keySet()) {
System.out.println("key is " + key);
System.out.println("value is " + map.get(key));
}
//遍历方法2: 直接遍历value
System.out.println("method 2 start");
for (String value : map.values()) {
System.out.println("value is " + value);
}
//遍历方法3: 通过遍历entry来取Key和value,推荐的方法!!!
System.out.println("method 3 start");
for (Map.Entry entry : map.entrySet()) {
System.out.println("key is " + entry.getKey());
System.out.println("value is " + entry.getValue());
}
//遍历方法4: 通过forEach方法直接遍历key和value
System.out.println("method 4 start");
map.forEach((key, value) -> {
System.out.println("key is " + key);
System.out.println("value is " + value);
});
// method 1 start------------------------ -
// key is
// value is 允许有一个key为null
// key is a
// value is a是第一个字母
// key is b
// value is b是第二个字母
// method 2 start------------------------ -
// value is 允许有一个key为null
// value is a是第一个字母
// value is b是第二个字母
// method 3 start------------------------ -
// key is
// value is 允许有一个key为null
// key is a
// value is a是第一个字母
// key is b
// value is b是第二个字母
// method 4 start------------------------ -
// key is
// value is 允许有一个key为null
// key is a
// value is a是第一个字母
// key is b
// value is b是第二个字母