Map不同于List和Set,List和Set都是Collection集合,每个元素只有一个值,Map每个元素则是一个键值对。要保证键的唯一性。
HashTable:底层是哈希表,键不能存入null值,线程同步,效率比较低。
HashMap:底层是哈希表,键能存入null。非线程同步。
TreeMap:底层是二叉树,线程不同步,可用于给map键进行排序。
其实本篇文章重点在于对Map的两种遍历方法。
第一种方法:
Set<String> setKey = map.keySet();
Iterator<String> it = setKey.iterator();
while (it.hasNext()) {
String key = it.next();
int value = map.get(key);
System.out.println(key + ":" + value);
}
第二种方法:
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
Iterator<Map.Entry<String, Integer>> entryIterator = entrySet.iterator();
while (entryIterator.hasNext()) {
Map.Entry<String, Integer> entry = entryIterator.next();
String key = entry.getKey();
int value = entry.getValue();
System.out.println(key + ":" + value);
}
以上两种方法实现了对Map的数据遍历操作。
如果想写出更加通用的遍历方法,可以使用泛型:
static <T1, T2> void printMap(Map<T1, T2> map) {
Set<T1> setKey = map.keySet();
Iterator<T1> it = setKey.iterator();
while (it.hasNext()) {
T1 key = it.next();
T2 value = map.get(key);
System.out.println(key + ":" + value);
}
}
主要介绍了对Map的遍历操作,其他使用没有做过多讲解。