map的常见用法与五种循环遍历源码---人生四季,寒暑交替,只有学会了“map”才能静心体味生活的悲与喜

举报
zhulin1028 发表于 2021/10/29 23:34:18 2021/10/29
【摘要】 目录 一、概述: 二、Map集合的功能介绍 三、map官方总结 四、实例 五、循环遍历的五种方法 一、概述: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 Map接口和Collection接口的不同 Map是双列的,Collection是单列的 Map的键唯一,Collection的子体系Se...

目录

一、概述:

二、Map集合的功能介绍

三、map官方总结

四、实例

五、循环遍历的五种方法


一、概述:

将键映射到值的对象
一个映射不能包含重复的键
每个键最多只能映射到一个值
Map接口和Collection接口的不同
Map是双列的,Collection是单列的
Map的键唯一,Collection的子体系Set是唯一的
Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效

二、Map集合的功能介绍

a:添加功能
V put(K key,V value):添加元素。这个其实还有另一个功能?替换
如果键是第一次存储,就直接存储元素,返回null
如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
b:删除功能
void clear():移除所有的键值对元素
V remove(Object key):根据键删除键值对元素,并把值返回
c:判断功能
boolean containsKey(Object key):判断集合是否包含指定的键
boolean containsValue(Object value):判断集合是否包含指定的值
boolean isEmpty():判断集合是否为空
d:获取功能
Set<Map.Entry<K,V>> entrySet(): 返回一个键值对的Set集合
V get(Object key):根据键获取值
Set keySet():获取集合中所有键的集合
Collection values():获取集合中所有值的集合
e:长度功能
int size():返回集合中的键值对的对数

三、map官方总结

Map 接口中键和值一一映射. 可以通过键来获取值。

  • 给定一个键和一个值,你可以将该值存储在一个 Map 对象。之后,你可以通过键来访问对应的值。
  • 当访问的值不存在的时候,方法就会抛出一个 NoSuchElementException 异常。
  • 当对象的类型和 Map 里元素类型不兼容的时候,就会抛出一个 ClassCastException 异常。
  • 当在不允许使用 Null 对象的 Map 中使用 Null 对象,会抛出一个 NullPointerException 异常。
  • 当尝试修改一个只读的 Map 时,会抛出一个 UnsupportedOperationException 异常。
序号 方法描述
1 void clear( )
 从此映射中移除所有映射关系(可选操作)。
2 boolean containsKey(Object k)
如果此映射包含指定键的映射关系,则返回 true。
3 boolean containsValue(Object v)
如果此映射将一个或多个键映射到指定值,则返回 true。
4 Set entrySet( )
返回此映射中包含的映射关系的 Set 视图。
5 boolean equals(Object obj)
比较指定的对象与此映射是否相等。
6 Object get(Object k)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
7 int hashCode( )
返回此映射的哈希码值。
8 boolean isEmpty( )
如果此映射未包含键-值映射关系,则返回 true。
9 Set keySet( )
返回此映射中包含的键的 Set 视图。
10 Object put(Object k, Object v)
将指定的值与此映射中的指定键关联(可选操作)。
11 void putAll(Map m)
从指定映射中将所有映射关系复制到此映射中(可选操作)。
12 Object remove(Object k)
如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
13 int size( )
返回此映射中的键-值映射关系数。
14 Collection values( )
返回此映射中包含的值的 Collection 视图。

四、实例

下面的例子来解释Map的功能


  
  1. import java.util.*;
  2. public class CollectionsDemo {
  3. public static void main(String[] args) {
  4. Map m1 = new HashMap();
  5. m1.put("Zara", "8");
  6. m1.put("Mahnaz", "31");
  7. m1.put("Ayan", "12");
  8. m1.put("Daisy", "14");
  9. System.out.println();
  10. System.out.println(" Map Elements");
  11. System.out.print("\t" + m1);
  12. }
  13. }

以上实例编译运行结果如下:


  
  1. Map Elements
  2. {Mahnaz=31, Ayan=12, Daisy=14, Zara=8}

五、循环遍历的五种方法


  
  1. package nc.util.TestClientTools;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.Set;
  8. /**
  9. * map集合遍历的五种方法
  10. * @FileName: CircleMap.java
  11. * @ClassName: nc.util.TestClientTools.CircleMap
  12. * @Description: TODO(这里用一句话描述这个类的作用)
  13. * @author chenfang
  14. * @email ichenfang163@163.com
  15. * @date 2017-12-11 下午3:54:24
  16. * @version V1.0
  17. *
  18. */
  19. //循环遍历map的五种方法
  20. public class CircleMap {
  21. public static void main(String[] args) {
  22. Map<String, Integer> tempMap = new HashMap<String, Integer>();
  23. tempMap.put("a", 1);
  24. tempMap.put("b", 2);
  25. tempMap.put("c", 3);
  26. // JDK1.4中
  27. // 遍历方法一 hashmap entrySet() 遍历
  28. System.out.println("方法一");
  29. Iterator it = tempMap.entrySet().iterator();
  30. while (it.hasNext()) {
  31. Map.Entry entry = (Map.Entry) it.next();
  32. Object key = entry.getKey();
  33. Object value = entry.getValue();
  34. System.out.println("key=" + key + " value=" + value);
  35. }
  36. System.out.println("");
  37. // JDK1.5中,应用新特性For-Each循环
  38. // 遍历方法二
  39. System.out.println("方法二");
  40. for (Map.Entry<String, Integer> entry : tempMap.entrySet()) {
  41. String key = entry.getKey().toString();
  42. String value = entry.getValue().toString();
  43. System.out.println("key=" + key + " value=" + value);
  44. }
  45. System.out.println("");
  46. // 遍历方法三 hashmap keySet() 遍历
  47. System.out.println("方法三");
  48. for (Iterator i = tempMap.keySet().iterator(); i.hasNext();) {
  49. Object obj = i.next();
  50. System.out.println(obj);// 循环输出key
  51. System.out.println("key=" + obj + " value=" + tempMap.get(obj));
  52. }
  53. for (Iterator i = tempMap.values().iterator(); i.hasNext();) {
  54. Object obj = i.next();
  55. System.out.println(obj);// 循环输出value
  56. }
  57. System.out.println("");
  58. // 遍历方法四 treemap keySet()遍历
  59. System.out.println("方法四");
  60. for (Object o : tempMap.keySet()) {
  61. System.out.println("key=" + o + " value=" + tempMap.get(o));
  62. }
  63. System.out.println("11111");
  64. // java如何遍历Map <String, ArrayList> map = new HashMap <String,
  65. // ArrayList>();
  66. System.out.println("java 遍历Map <String, ArrayList> map = new HashMap<String, ArrayList>();");
  67. Map<String, ArrayList> map = new HashMap<String, ArrayList>();
  68. Set<String> keys = map.keySet();
  69. Iterator<String> iterator = keys.iterator();
  70. while (iterator.hasNext()) {
  71. String key = iterator.next();
  72. ArrayList arrayList = map.get(key);
  73. for (Object o : arrayList) {
  74. System.out.println(o + "遍历过程");
  75. }
  76. }
  77. System.out.println("2222");
  78. // 遍历方法五
  79. Map<String, List> mapList = new HashMap<String, List>();
  80. for (Map.Entry entry : mapList.entrySet()) {
  81. String key = entry.getKey().toString();
  82. List<String> values = (List) entry.getValue();
  83. for (String value : values) {
  84. System.out.println(key + " --> " + value);
  85. }
  86. }
  87. }
  88. }

文章来源: zhulin1028.blog.csdn.net,作者:zhulin1028,版权归原作者所有,如需转载,请联系作者。

原文链接:zhulin1028.blog.csdn.net/article/details/120541480

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。