对于Map集合不太熟悉,所以这次进行加强学习。
Map是一个键值对的集合,key是一个Set集合,value是一个Collection的集合
实现类有三种。HashMap,TreeMap,HashTable。
其中HashMap底层是一个哈希表,键值都可以是null
TreeMap 底层是一个二叉树,支持健排序
HashTable 也是一个哈希表,键值都不可为null,这个可能已经过时了。
如何遍历Map,有很多种方法。这边主要说2种
1. Entry
2. Iterator
Entry:
Map<String, String> map = new HashMap<>(); map.put("chashaobao1", "123"); map.put("chashaobao2", "1234"); map.put("chashaobao3", "1235"); map.put("chashaobao4", "1236"); for(Entry<String, String> s : map.entrySet()) { System.out.println(s); }
打印的结果:
chashaobao1=123
chashaobao2=1234
chashaobao3=1235
chashaobao4=1236
Iterator iter = map.entrySet().iterator(); while(iter.hasNext()){ Entry<String, String> et = (Entry<String, String>) iter.next(); System.out.println("----------"); System.out.println(et.getKey()); System.out.println(et.getValue()); }
打印的结果:
----------
chashaobao1
123
...........(此处省略)
----------
chashaobao4
1236
结论:都是得到entry对象然后调取方法,获取键值。这些方法都不唯一。还有很多方法可以遍历Map
在Map集合里面还有containskey() 方法来判断是否存有对应的键名.使用containskey可以避免出现一些奇怪的问题.
因为HashMap是允许Null作为键值,所以如果get(),可能会出现判断不了的情况。一种是在集合中没有该键对象,另一种是该键对象为null。
这是我对Map的一些浅薄的见解,如有什么不对,请大神指出。虽然感觉看到的人也不多。算是对自己的学习记录一下。
目前正是一个Java的小菜鸟在IT大道中走出的一小步