温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java那点儿事之Map集合有什么不为人知的秘密

发布时间:2021-10-21 15:04:18 来源:亿速云 阅读:121 作者:iii 栏目:开发技术

本篇内容主要讲解“Java那点儿事之Map集合有什么不为人知的秘密”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java那点儿事之Map集合有什么不为人知的秘密”吧!

一、Map

Map集合的特点
- 键值对映射关系
- 一个键对应一个值
- 键不能重复,值可以重复
- 元素存取无序

我们通过他的一个实现类HashMap集合来理解

二、HashMap的基本概念

HashMap的定义:

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。

HashMap 是无序的,即不会记录插入的顺序。

HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

Java那点儿事之Map集合有什么不为人知的秘密

那么HashMap的键和值的类型可以是String类型,也可以是其他数据的包装类类型,那么说到包装类类型,这里顺便帮大家复习一下包装类类型哦:

Java那点儿事之Map集合有什么不为人知的秘密

Java那点儿事之Map集合有什么不为人知的秘密

三、HashMap集合的基本方法与使用

学完HashMap集合的基本概念,那么我们怎么去在实际开发过程中去使用他呢?这里我们就要用到他的特有方法了,

以下是HashMap集合的常用方法

Java那点儿事之Map集合有什么不为人知的秘密

需要注意的是,Map集合的元素的添加并不是Collection集合的add()方法,而是Put()方法。因为Map集合是键值对集合,那么我们如何获取集合中的每一个元素呢?这里集合也给我们提供了他的元素获取方法:

Java那点儿事之Map集合有什么不为人知的秘密

示例代码如下:

import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set;   /*     Map集合的获取功能:         V get(Object key):根据键获取值         Set<K> keySet():获取所有键的集合         Collection<V> values():获取所有值的集合  */ public class MapDemo03 {     public static void main(String[] args) {         Map<String, String> m = new HashMap<String, String>();           m.put("张三", "李四");         m.put("王五", "赵六");         m.put("李老板", "光头强");         // V get(Object key):根据键获取值         System.out.println(m.get("张三"));           System.out.println(m.get("张四"));         System.out.println("=============");           //        Set<K> keySet():获取所有键的集合         Set<String> s = m.keySet();         for (String i : s) {             System.out.println(i);         }         System.out.println("=============");           //        Collection<V> values():获取所有值的集合         Collection<String> c = m.values();         for (String x : c) {             System.out.println(x);         }     } }

输出结果:

李四
null
=============
张三
王五
李老板
=============
李四
赵六
光头强

四、HashMap集合的遍历

其实遍历无非就是把集合中的元素一个一个给取出来,我们能用,那么在第三部分其实就已经讲到了一种遍历方式,那就是我们去获取键的集合,然后用循环去获取每一个键所对应的值,这样我们就将集合中的每一个元素取出来了。

遍历方式一:根据键的集合找值

步骤分析
- 获取所有键的集合。用keySet()方法实现
- 遍历键的集合,获取到每一个键。用增强for实现
- 根据键去找值。用get(Object key)方法实现

代码实现

import java.util.Map; import java.util.HashMap; import java.util.Set;   /*     Map集合的遍历(方式1):         1:获取所有键的集合。用keySet()方法实现         2:遍历键的集合,获取到每一个键。用增强for实现         3:根据键去找值。用get(Object key)方法实现  */ public class MapDemo01 {     public static void main(String[] args) {         //创建集合对象         Map<String, String> map = new HashMap<String, String>();           //添加元素         map.put("张无忌", "赵敏");         map.put("郭靖", "黄蓉");         map.put("杨过", "小龙女");         //1:获取所有键的集合。用keySet()方法实现         Set<String> keySet = map.keySet();           for (String key : keySet) {             String value = map.get(key);             System.out.println(key + "," + value);         }       } }

输出结果:

杨过,小龙女
郭靖,黄蓉
张无忌,赵敏

那么第二种方法就是我们利用entrySet()方法来获取集合中所有的键值对集合,然后去获取所对的键或值。

HashMap集合遍历方式二:键值对集合找键值对

步骤分析
- 获取所有键值对对象的集合
- Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合
- 遍历键值对对象的集合,得到每一个键值对对象
- 用增强for实现,得到每一个Map.Entry
- 根据键值对对象获取键和值
- 用getKey()得到键
- 用getValue()得到值

代码实现

import java.util.HashMap; import java.util.Map; import java.util.Set;   /*     Map集合的遍历(方式2):         1:获取所有键值对对象的集合             Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合         2:遍历键值对对象的集合,得到每一个键值对对象             用增强for实现,得到每一个Map.Entry         3:根据键值对对象获取键和值             用getKey()得到键             用getValue()得到值  */ public class MapDemo02 {     public static void main(String[] args) {         //创建集合对象         Map<String, String> map = new HashMap<String, String>();           //添加元素         map.put("张无忌", "赵敏");         map.put("郭靖", "黄蓉");         map.put("杨过", "小龙女");           //1:获取所有键值对对象的集合         Set<Map.Entry<String, String>> me = map.entrySet();   //        遍历键值对对象的集合,得到每一个键值对对象         for (Map.Entry<String, String> e : me) {             String key = e.getKey();             String value = e.getValue();             System.out.println(key + "," + value);         }       } }

输出结果:

杨过,小龙女
郭靖,黄蓉
张无忌,赵敏

两种遍历方式都是很实用,各位大佬在开发中愿意用哪种都是可以的哦。

五、HashMap集合的综合案例

有道是:与其临渊羡鱼,不如退而结网。看了那么 多理论的东西不自己动手去实践一下,那么鱼儿永远在鱼塘,知识永远在电脑里,接下来就让我们一起动手做一道题,来加深一下印象。

案例需求:

案例需求
- 键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。
- 举例:键盘录入“aababcabcdabcde” 在控制台输出:“a(5)b(4)c(3)d(2)e(1)”

思路解析:

1:键盘录入一个字符串
2:创建HashMap集合,键是Character,值是Integer
3:遍历字符串,得到每一个字符
4:拿得到的每一个字符作为键到HashMap集合中去找对应的值,看其返回值
如果返回值是null:说明该字符在HashMap集合中不存在,就把该字符作为键,1作为值存储
如果返回值不是null:说明该字符在HashMap集合中存在,把该值加1,然后重新存储该字符和对应的值
5:遍历HashMap集合,得到键和值,按照要求进行拼接
6:输出结果

代码实例:

import java.util.HashMap; import java.util.Scanner; import java.util.Set;   /*     需求:         键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。         举例:键盘录入“aababcabcdabcde”	在控制台输出:“a(5)b(4)c(3)d(2)e(1)”     思路:         1:键盘录入一个字符串         2:创建HashMap集合,键是Character,值是Integer         3:遍历字符串,得到每一个字符         4:拿得到的每一个字符作为键到HashMap集合中去找对应的值,看其返回值             如果返回值是null:说明该字符在HashMap集合中不存在,就把该字符作为键,1作为值存储             如果返回值不是null:说明该字符在HashMap集合中存在,把该值加1,然后重新存储该字符和对应的值         5:遍历HashMap集合,得到键和值,按照要求进行拼接         6:输出结果  */ public class HashMapDemo {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         System.out.println("请输入一个字符串:");         String s = sc.nextLine();           HashMap<Character, Integer> hm = new HashMap<Character, Integer>();           for (int i = 0; i < s.length(); i++) {             char key = s.charAt(i);               Integer value = hm.get(key);             if (value == null) {                 hm.put(key, 1);               } else {                 value++;                 hm.put(key, value);             }         }           StringBuilder sb = new StringBuilder();           Set<Character> keySet = hm.keySet();         for (Character key1 : keySet) {             Integer values = hm.get(key1);             sb.append(key1).append("(").append(values).append(")");         }         String result = sb.toString();         System.out.println(result);     } }

输出结果:

请输入一个字符串:
aababcabcdabcde
a(5)b(4)c(3)d(2)e(1)

到此,相信大家对“Java那点儿事之Map集合有什么不为人知的秘密”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI