对于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
相关文章推荐
- 对于二叉树三种非递归遍历方式的理解
- 遍历Map集合的多种方式
- 对于吸收信息的方式的理解
- Map集合遍历的四种方式理解和简单使用
- 二叉树的多种遍历方式
- Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包
- hdfs客户端的理解,多种方式操作hdfs
- 关于聪明,多种理解方式。
- 深入理解JavaScript创建对象的多种方式以及优缺点
- 今天对于图又有了更深的理解,可是还是有问题,那个非递归的深度优先不知道怎么的,好像不能够完全遍历。有点郁闷呀。
- 通过经典题目来理解多种闭包实现方式
- php数组中常用的多种遍历方式
- HashMap多种遍历方式以及性能对比(JDK1.7)
- Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包
- Map集合遍历的四种方式理解和简单使用
- 对于STM32使用FSMC驱动传统8080并口器件方式(TFT)的理解(下)
- 对于Java中Map的遍历方式,很多文章都推荐使用entrySet
- 对于C++保护继承方式的一点理解
- CNN卷积理解初步概念理解(对于别人的博客的自己打开方式)
- Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包