1. Map里的常见方法

Map接口用来存储成对的数据

实现类: HashMap / LinkedHashMap / TreeMap / HashTable / Properties

Map的特点:

1. 存储数据都是成对出现的,我们称之为键值对 Key-Value

2. key不允许重复,如果出现重复的key,后一个对应的value会覆盖前一个value(非绝对)

3. 存储的元素是无序的,不能通过下标来获取到元素

Map 和 Collection 这两个接口之间没有任何的继承关系

Map里的常见方法:

size(): 获取键值对的个数

containsKey(Object key): 判断 key 是否存在

containsValue(Object value): 判断value是否存在

put(K k,V v): 存入一个键值对。如果key已经存在,后一个value会覆盖前一个value

putIfAbsent(K k,V v): 存入一个键值对,如果key已经存在,后一个value不再存入

V get(K k): 根据指定的key 获取到对应的value,如果key不存在,返回 null

V getOrDefault(K k,V defaultValue): 根据key获取value,如果key存在,获取到对应的value;如果key不存在,使用默认值

remove(Object key): 根据key移除对应的键值对,返回移除的key对应的value

remove(Object key,Object value): 使用键值对来移除,只有键和值都匹配才能移除!

replace(K k,V v): 使用新的 value替换 旧的value,等价于 再次put(K k,V v)

replace(k k,V oldValue,V newValue): 找到 匹配的k和oldValue,然后使用newValue替换

public class MapDemo {public static void main(String[] args) {Map<String, String> heroes = new HashMap<>();heroes.put("黑旋风", "李逵");heroes.put("齐天大圣", "孙悟空");// heroes.put("黑旋风", "李鬼");  key存在,后一个value会覆盖前一个heroes.putIfAbsent("黑旋风", "李鬼"); // key存在,后一个value不会存入heroes.put("斗战胜佛", "孙悟空");System.out.println(heroes);String value = heroes.get("黑旋风");System.out.println(value);System.out.println(heroes.get("及时雨"));System.out.println(heroes.getOrDefault("及时雨", "宋江"));System.out.println(heroes.getOrDefault("齐天大圣", "弼马温"));System.out.println(heroes);System.out.println(heroes.containsValue("孙悟空"));/*String x = heroes.remove("黑旋风");System.out.println(x);*/heroes.remove("黑旋风", "李鬼");System.out.println(heroes);heroes.replace("黑旋风", "李鬼", "张三");System.out.println(heroes);}
}

2. Map遍历

Map遍历相关的方法:

values(): 获取到所有的value组成的 Collection,再使用 Collection的 迭代器来遍历

这种方式只能获取到所有的 value,不能获取到对应的 key

key是唯一的,可以通过key获取到value;但是value不唯一,不能通过value获取到对应的key

keySet(): 获取到 所有的 key组成的 Set类型的集合

entrySet(): 获取到 所有的 键值对 组成的 Set集合

public class MapIterator {public static void main(String[] args) {Map<String, String> heroes = new HashMap<>();heroes.put("及时雨", "宋江");heroes.put("黑旋风", "李逵");heroes.put("齐天大圣", "孙悟空");heroes.put("雷神", "索尔");heroes.put("钢铁侠", "史塔克");heroes.put("美国队长", "罗杰斯");/* Map是无序的,不能通过下标获取到元素for (int i = 0; i < heroes.size(); i++) {System.out.println(heroes.get(i));  把数字i当做key来查找对应的value}*//*Collection<String> values = heroes.values();for (String value : values) {System.out.println(value);}*//*Set<String> keySet = heroes.keySet();Iterator<String> iterator = keySet.iterator();while (iterator.hasNext()) {String k = iterator.next();System.out.println(k + ":" + heroes.get(k));}*//*for (String k : heroes.keySet()) {System.out.println(k + ":" + heroes.get(k));}*//*Set<Map.Entry<String, String>> entrySet = heroes.entrySet();for (Map.Entry<String, String> entry : entrySet) {System.out.println(entry.getKey() + " : " + entry.getValue());}*/for (Map.Entry<String, String> entry : heroes.entrySet()) {System.out.println(entry.getKey() + " : " + entry.getValue());}}
}

3. Map的使用场景,统计字符串里每个字符出现的次数

public class MapTest {public static void main(String[] args) {String s = "dk;gkh;kj;df";Map<Character, Integer> counts = new HashMap<>();for (char c : s.toCharArray()) {/*if (!counts.containsKey(c)) {counts.put(c, 1);} else {counts.put(c, counts.get(c) + 1);}*/counts.put(c, counts.getOrDefault(c, 0) + 1);}System.out.println(counts);}
}
{"d":2,"k":3, ";":3, "g":1, "h":1, "j":1}

Map里的常见方法及遍历相关推荐

  1. java基础—Map集合的常见方法操作(java集合八)

    Map集合的常见方法操作 Map集合中的元素取出并打印的三种方式 import java.util.Collection; import java.util.HashMap; import java. ...

  2. Map接口的常见方法

    Map接口之put方法: public class demo1Map {public static void main(String[] args){show01();}/*public v put( ...

  3. Java中Map里put方法的返回值

    在java中,Map里的put方法,如果key值不存在,则返回值是null,但是key值如果存在,则会返回原先被替换掉的value值.(当然,map中的key和value都允许是null). Map ...

  4. JAVA遍历Map的几种方法

    ​​​​​​​​​​​​​​ 目录 前言 一.for循环 + Entryset 二.Iterator + Entryset 三.for循环 + KeySet(效率低) 四.Iterator + Key ...

  5. 遍历Map的四种方法之map.entry详解

    Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>,Map.Entry 是Map中的一个接口,他的用途是表示一个映射项(里面有Key和Va ...

  6. java stream 遍历map_遍历map的五种方法介绍

    日常开发中Map集合遍历是经常使用的,下面介绍几种遍历方法的差异. (推荐教程:java课程) 1.Iterator+entrySet写法[推荐JDK8以下],Map.Entry是Map接口的内部接口 ...

  7. java中遍历map的几种方法介绍

          喜欢用Java写程序的朋友都知道,我们常用的一种数据结构map中存储的是键值对,我们一般存储的方式是: map.put(key, value); 而提取相应键的值用的方法是: map.ge ...

  8. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 find 方法遍历 map 集合 | 代码示例 )

    文章目录 一.使用 map 集合的 find 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 find 方法遍历 map 集合 使用 map 集合的 find 方法遍历 map 集合 ...

  9. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )

    文章目录 一.使用 map 集合的 each 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 each 方法遍历 map 集合 遍历 map 集合 , 可以调用 map 集合的 eac ...

最新文章

  1. nyoj543遥控器
  2. vue项目和react项目中禁止eslint
  3. 十进制转二进制转换c语言程序,c语言编程如何实现-十进制数转换成二进制和 – 手机爱问...
  4. catia钣金根据线段折弯_SolidWorks钣金折弯参数设置技巧
  5. 【渝粤题库】陕西师范大学164212 国际贸易实务 作业(专升本)
  6. 前端学习(3031):vue+element今日头条管理-暂时当前登录用户信息
  7. Portainer简介及部署
  8. ipython notebook超级好用
  9. Github | ICCV2019论文1000余篇更新!附下载链接
  10. 力扣——字符串转换整数(atoi)
  11. 通过jQuery的attr修改onclick
  12. 基于CSS+dIV的网页层,点击后隐藏或显示
  13. matlb:kmeans命令进行聚类和pdist2进行预测(含代码)
  14. conime.exe 文件的秘密
  15. 网络游戏外挂与反外挂的研究
  16. X86_64 GNU汇编、寄存器、内嵌汇编
  17. 《第六堂棒球课》:MLB棒球创造营·棒球名人堂
  18. 绩效考核管理系统使用说明2
  19. copy() 与 clone() 的区别
  20. [objective-c]使用Lumberjack未定义

热门文章

  1. 信贷基本词汇英汉对照[突然发现写软件也要被迫学企业管理的一些相关知识....]...
  2. 由百事引起的、关于五月天的 胡言乱语
  3. python输入日期求星期几_python中输入年月日判断星期几?
  4. 10G POE 网络变压器
  5. 关于Linux下C语言开发基础的实验内容。
  6. automatic 和 noautomatic区别
  7. android 高颜值app开发第一步——颜色与渐变
  8. CSS第三章:13.布局:如何进行网页的经典布局,使用何种标签?让块元素从左到右自然排列如何设置?
  9. spket1.6.23安装 spket破解
  10. h5按钮css3动态特效,让页面静不下来