您的位置:首页 > 编程语言 > Java开发

对于java Map集合的理解和多种遍历方式

2018-03-20 20:31 190 查看

Map集合

Map提供了一种映射关系,其中的元素是以键值对(key - value)的形式存储的,能够实现根据key快熟查找value
键(key)不可以重复,值(value)值可以重复
每个键最多只能映射到一个值(也就是一个键,只能对应一个值
当存放相同的键:当前的键会将原来的键覆盖

其实现类结构如下:



注:
HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap
HashMap与Hashtable的区别:
Hashtable中的“key”和“value”都不允许null,而HashMap允许。
Hashtable是线程安全的,适合在多用户环境中使用,效率稍低;HashMap不是线程安全的,效率稍高,适合在单线程环境下使用。

集合视图 keySet()、values() 和 entrySet()
      entrySet()   
           返回 Map 中所包含映射的 Set 视图。 Set 中的每个元素都是一个 Map.Entry 对象,可以使用 getKey() 和 getValue() 方法(还有一个 setValue() 方法)访问后者的键元素和值元素 
      keySet()     
           返回 Map 中所包含键的 Set 视图。 删除Set 中的元素还将删除 Map 中相应的映射(键和值) 
      values()  
           返回 map 中所包含值的 Collection 视图。删除 Collection 中的元素还将删除 Map 中相应的映射(键和值)
可以查看API中的提供的方法(文章底部附jdk1.8API)。

遍历Map

Map<Integer, String> hm = new HashMap<Integer, String>();// 添加了泛形
hm.put(1, "first");// 添加元素
hm.put(2, "two");
hm.put(3, "three");
hm.put(4, "four");
// 遍历集合
System.out.println("第一种方式---------------");

for (Map.Entry<Integer, String> map : hm.entrySet()) { // entrySet返回一个Set视图
System.out.println(map.getKey() + "--------" + map.getValue());
// getKey()获得键 getValue()获得值
}

System.out.println("第二种方式---------------");

Set<Integer> ss = hm.keySet(); // 转为set视图
Iterator<Integer> it = ss.iterator(); // 获得一个迭代器
while (it.hasNext()) { // 判断是否有下一个元素
Integer key = it.next(); // 获得下一个键
String values = hm.get(key); // 通过键获得值
System.out.println(key + "---------------" + values);
}

System.out.println("第三种方式---------------");

Set<Integer> si = hm.keySet(); // 返回一个set视图
for (Integer key : si) {
String values = hm.get(key); // 通过键获得值
System.out.println(key + "---------------" + values);
}
遍历Map集合有多种方式,选择一种自己觉得便于理解的方式即可!
jdk1.8下载:https://download.csdn.net/download/fly_tom/10298560
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Map集合  遍历