本篇内容主要讲解“Java高级之HashMap中的entrySet()方法怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java高级之HashMap中的entrySet()方法怎么使用”
本篇内容主要讲解“Java高级之HashMap中的entrySet()方法怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java高级之HashMap中的entrySet()方法怎么使用”吧!
entrySet()方法得到HashMap中各个键值对映射关系的集合。
然后Map.Entry中包含了geTKEy()和getValue()方法获取键和值。
示例:
public class Demo { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("abc", "123"); map.put("efg", "456"); // 使用增强型for遍历循环Map集合 Set<Map.Entry<String, String>> entrySet = map.entrySet(); for (Map.Entry<String, String> entry : entrySet) { System.out.println(entry.getKey() + "->" + entry.getValue()); } }}
HashMap的entrySet()方法返回Set<Map.Entry<String, String>>,那么为什么entrySet()方法可以得到键值对映射集合呢?
public Set<Map.Entry<K, V>> entrySet() { Set<Map.Entry<K, V>> es; return (es = entrySet) == null ? (entrySet = new EntrySet()) : es; }
其实entrySet()方法的原理和keySet()方法、values()方法的原理是一致的。
entrySet()方法的源码注释如下:
public Set<Map.Entry<K, V>> entrySet() { Set<Map.Entry<K, V>> es; return (es = entrySet) == null ? (entrySet = new EntrySet()) : es; }
那么看看编译后生成的字节码文件Demo.class
public class Demo { public Demo() { } public static void main(String[] args) { Map<String, String> map = new HashMap(); map.put("abc", "123"); map.put("efg", "456"); Set<Entry<String, String>> entrySet = map.entrySet(); Iterator var3 = entrySet.iterator(); while(var3.hasNext()) { Entry<String, String> entry = (Entry)var3.next(); System.out.println((String)entry.getKey() + "->" + (String)entry.getValue()); } }}
能够获取到元素是通过迭代器Iterator遍历得来的,所以entrySet()方法能有键值对的映射集合,是因为iterator()方法。
那么iterator()方法是哪里的呢?
在entrySet()方法中使用new实例化了一个EntrySet类
查看EntrySet类源码,里面有个iterator()方法,字节码文件中调用的就是该iterator()方法
在该方法的return语句中又实例化了EntryIterator类作为返回值,是一个迭代器,查看EntryIterator类的源码,只有一个next()方法
该方法被调用返回的类型就是Map.Entry<K, V>,而得到的结果是nextnode()方法的返回值。
nextNode()方法的作用就是返回下一个结点。
而Entry是Map的内部接口,该Entry接口有几个方法可以设置或得到键值。
所以能够通过entry.getKey()和entry.getValue()方法获取到键和值。
并且Node<K, V>是Map.Entry<K, V>的实现类。
到此,相信大家对“Java高级之HashMap中的entrySet()方法怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
--结束END--
本文标题: Java高级之HashMap中的entrySet()方法怎么使用
本文链接: https://www.lsjlt.com/news/352568.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-06
2024-05-06
2024-05-06
2024-05-06
2024-05-06
2024-05-06
2024-05-06
2024-05-06
2024-05-06
2024-05-06
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0