首页 > 编程语言 >java中的HashMap类的遍历

java中的HashMap类的遍历

时间:2023-01-01 22:15:15浏览次数:39  
标签:Node 遍历 java HashMap System println out hashMap

示例代码如下:

 1 public class HashMapBianLiTest {
 2     public static void main(String[] args) {
 3         // hashMap的遍历
 4         HashMap hashMap = new HashMap();
 5         hashMap.put("张晋","蔡少芬");
 6         hashMap.put("王宝强","马蓉");
 7         hashMap.put("宋儿","马蓉");
 8         hashMap.put("宋儿","元明"); // 覆盖【替换】
 9 
10         // 第一种方式:KeySet
11         // 静态内部类:class java.util.HashMap$KeySet
12         Set keySet = hashMap.keySet();
13         // 1.1
14         Iterator iterator = keySet.iterator();
15         while (iterator.hasNext()) {
16             Object obj =  iterator.next();
17             System.out.println(obj + ": " + hashMap.get(obj));
18         }
19         // 1.2
20         for (Object o : keySet) {
21             System.out.println(o + ": " + hashMap.get(o));
22         }
23 
24         // 第二种方式:values【只能遍历value】
25         // 静态内部类:class java.util.HashMap$Values
26         Collection values = hashMap.values();
27         // 2.1
28         Iterator iterator1 = values.iterator();
29         while (iterator1.hasNext()) {
30             Object next =  iterator1.next();
31             System.out.println(next);
32         }
33         // 2.2
34         for (Object value : values) {
35             System.out.println(value);
36         }
37 
38         // 第三种方式:entrySet
39         // 静态内部类:class java.util.HashMap$EntrySet
40         // hashMap中的k-v,先转成一个Node类型【HashMap的静态成员内部类】的节点,将数个节点,放到EntrySet集合中。
41         // Node类型:static class Node<K,V> implements Map.Entry<K,V>【作用域在同一包下】
42         Set set = hashMap.entrySet();
43         // 3.1
44         Iterator iterator2 = set.iterator();
45         while (iterator2.hasNext()) {
46             // obj: class java.util.HashMap$Node
47             // 向下转型,调用Map.Entry<k,v>的方法
48             Object obj =  iterator2.next();
49             // 由于HashMap的静态成员内部类中的Node作用域是在同一包下,因此无法使用HashMap.Node,
50             // 但是Node implements Map.Entry<K,V>,因此可以用Map.Entry接口来转型,
51             // 通过动态绑定机制,调用Node类对象的已经实现的方法。
52             Map.Entry map = (Map.Entry) obj;
53             System.out.println(map.getKey() +": " + map.getValue());
54 
55 //            System.out.println(next);// Node重写了toString()
56         }
57         // 3.2
58         for (Object o : set) {
59             System.out.println(o);
60         }
61 
62     }
63 }

如果想要有更加深入的理解,请debug查看源码。

标签:Node,遍历,java,HashMap,System,println,out,hashMap
From: https://www.cnblogs.com/zwgitOne123/p/17018778.html

相关文章

  • Linux 中 java 访问 windows共享目录
    有两个方案(本文介绍方案1的使用)1、将windows共享目录,挂载到linux系统下,通过使用本地目录访问windows共享目录2、通过samba的java实现包,不过需要开个windows共享目录的账......
  • BM26 求二叉树的层序遍历
    题目描述思路分析外部使用一个容器来存储,借助一个临时的栈来存储每一层的节点,之后根绝临时栈不为空的条件来遍历每一层,并将结果存到容器中代码参考constlevelOrder=......
  • Java序列化和反序列化
    遇到这个JavaSerializable序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用。为啥要实现这个Serializable接口,也就是为啥要序列化c,serialVersion......
  • Set接口实现类的遍历
    Set接口实现类主要是:HashSet,LinkedHashSet【二者,可以看看java集合.xmind文件】,TreeSet【没有学到】一.HashSet类的遍历:1publicclassSetBianLiTest{2pu......
  • Java多种方式读取文件内容
    1.以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。2.以字符为单位读取文件,常用于读文本,数字等类型的文件。3.以行为单位读取文件,常用于读面向行的格式化......
  • 二叉树的先中后序遍历
    二叉树:每个节点最多只有两个字节点JS中通常用Object来模拟二叉树(val:1,left:0,right:0)constbt={val:1,left:{......
  • java-流程控制语句
    目录顺序分支if判断if格式1if格式2if格式3switch选择case穿透:即没有break的case语句!补充:if和switch的使用说明!流程for循环*while循环*for与while的区别do...while循环顺......
  • List接口实现类的遍历方式
    List接口实现类主要有:ArrayList,LinkedList,Vector【三者区别,可以看看java集合.xmind文件】一.ArrayList类的遍历:1publicclassListBianLiTest{2publics......
  • Java06 面向对象
    一什么是面向对象面向对象编程(Object-OrientedProgramming,OOP)面向对象编程的本质就是:以类的方式组织代码,以对象组织(封装)数据。三大特性:封装继承多态从认识论角......
  • 最近开始学Java,看到视频老师讲到9*9乘法表,一下子怀念起以前学校里学C时候的感觉了
    贴个代码记录一下,在学校的时光,这可是难倒我的难题,那时候都是靠死记硬背。......