如何在 Java 中迭代任何 Map 2021-08-14 09:38 10837阅读 0赞 # 如何在 Java 中迭代任何 Map 在 Java中迭代[Map 的](https://www.geeksforgeeks.org/map-interface-java-examples/)方法通常有**五种**。在本文中,我们将讨论所有这些,并研究它们的优缺点。首先,我们**不能**直接使用[iterators 迭代](https://www.geeksforgeeks.org/iterators-in-java/)Map,因为 Map 不是[Collection。](https://www.geeksforgeeks.org/collections-in-java-2/)此外,在继续之前,您必须对[Map.Entry](https://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html)接口有所了解。由于 Java 中的所有映射都实现了[Map](https://www.geeksforgeeks.org/map-interface-java-examples/)接口,因此以下技术适用于任何映射实现([HashMap](https://www.geeksforgeeks.org/java-util-hashmap-in-java/)、[TreeMap](https://www.geeksforgeeks.org/hashmap-treemap-java/)、[LinkedHashMap](https://www.geeksforgeeks.org/linkedhashmap-class-java-examples/)、[Hashtable](https://www.geeksforgeeks.org/java-util-hashtable-class-java/)等) **1. 使用 For-Each 循环迭代 Map.entrySet() :** *Map.entrySet()*方法返回此映射中包含的映射的集合视图(*Set<Map.Entry<K, V>>*)。所以我们可以使用[Map.Entry 的](https://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html)*getKey()*和*getValue()*方法迭代键值对。此方法最常见,如果您需要循环中的映射键和值,则应使用此方法。下面是演示它的java程序。 ``` // Java program to demonstrate iteration over // Map.entrySet() entries using for-each loop import java.util.Map; import java.util.HashMap; class IterationDemo { public static void main(String[] arg) { Map<String,String> gfg = new HashMap<String,String>(); // enter name/url pair gfg.put("GFG", "geeksforgeeks.org"); gfg.put("Practice", "practice.geeksforgeeks.org"); gfg.put("Code", "code.geeksforgeeks.org"); gfg.put("Quiz", "quiz.geeksforgeeks.org"); // using for-each loop for iteration over Map.entrySet() for (Map.Entry<String,String> entry : gfg.entrySet()) System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } } ``` **输出:** ``` Key = Quiz, Value = quiz.geeksforgeeks.org Key = Practice, Value = practice.geeksforgeeks.org Key = GFG, Value = geeksforgeeks.org Key = Code, Value = code.geeksforgeeks.org ``` **2. 使用 keySet() 和 values() 方法迭代键或值** *Map.keySet()*方法返回此映射中包含的键的 Set 视图,*Map.values()*方法返回包含在其中的值的集合视图这张地图。因此,如果您只需要映射中的键或值,则可以使用 for-each 循环遍历 keySet 或值。下面是演示它的java程序。 ``` // Java program to demonstrate iteration over // Map using keySet() and values() methods import java.util.Map; import java.util.HashMap; class IterationDemo { public static void main(String[] arg) { Map<String,String> gfg = new HashMap<String,String>(); // enter name/url pair gfg.put("GFG", "geeksforgeeks.org"); gfg.put("Practice", "practice.geeksforgeeks.org"); gfg.put("Code", "code.geeksforgeeks.org"); gfg.put("Quiz", "quiz.geeksforgeeks.org"); // using keySet() for iteration over keys for (String name : gfg.keySet()) System.out.println("key: " + name); // using values() for iteration over values for (String url : gfg.values()) System.out.println("value: " + url); } } ``` **输出:** ``` key: Quiz key: Practice key: GFG key: Code value: quiz.geeksforgeeks.org value: practice.geeksforgeeks.org value: geeksforgeeks.org value: code.geeksforgeeks.org ``` **3. 在**[**Map.Entry 上**](https://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html) **使用迭代器进行迭代** 这种方法与第一种方法有些相似。在第一种方法中,我们在 Map.Entry<K, V> 上使用 for-each 循环,但在这里我们使用[迭代器](https://www.geeksforgeeks.org/iterators-in-java/)。在 Map.Entry<K, V> 上使用迭代器有其自身的优势,即我们可以通过调用*iterator.remove()*方法在迭代期间从地图中删除条目。 ``` // Java program to demonstrate iteration over // Map using keySet() and values() methods import java.util.Map; import java.util.HashMap; import java.util.Iterator; class IterationDemo { public static void main(String[] arg) { Map<String,String> gfg = new HashMap<String,String>(); // enter name/url pair gfg.put("GFG", "geeksforgeeks.org"); gfg.put("Practice", "practice.geeksforgeeks.org"); gfg.put("Code", "code.geeksforgeeks.org"); gfg.put("Quiz", "quiz.geeksforgeeks.org"); // using iterators Iterator<Map.Entry<String, String>> itr = gfg.entrySet().iterator(); while(itr.hasNext()) { Map.Entry<String, String> entry = itr.next(); System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } } } ``` **输出:** ``` Key = Quiz, Value = quiz.geeksforgeeks.org Key = Practice, Value = practice.geeksforgeeks.org Key = GFG, Value = geeksforgeeks.org Key = Code, Value = code.geeksforgeeks.org ``` **4. 使用 forEach(action) 方法:** 在 Java 8 中,您可以使用*Map.forEach(action)*方法和[lambda 表达式](https://www.geeksforgeeks.org/lambda-expressions-java-8/)迭代映射。这种技术既干净又快速。 ``` // Java code illustrating iteration // over map using forEach(action) method import java.util.Map; import java.util.HashMap; class IterationDemo { public static void main(String[] arg) { Map<String,String> gfg = new HashMap<String,String>(); // enter name/url pair gfg.put("GFG", "geeksforgeeks.org"); gfg.put("Practice", "practice.geeksforgeeks.org"); gfg.put("Code", "code.geeksforgeeks.org"); gfg.put("Quiz", "quiz.geeksforgeeks.org"); // forEach(action) method to iterate map gfg.forEach((k,v) -> System.out.println("Key = " + k + ", Value = " + v)); } } ``` **输出 :** ``` Key = Quiz, Value = quiz.geeksforgeeks.org Key = Practice, Value = practice.geeksforgeeks.org Key = GFG, Value = geeksforgeeks.org Key = Code, Value = code.geeksforgeeks.org ``` **5. 迭代键和搜索值(低效)** 这里首先我们循环键(使用*Map.keySet()*方法),然后为每个*键*搜索值(使用*Map.get(key)*方法)。这种方法不是在实践中使用,因为它非常缓慢且效率低下,因为通过键获取值可能很耗时。 ``` // Java program to demonstrate iteration // over keys and searching for values import java.util.Map; import java.util.HashMap; class IterationDemo { public static void main(String[] arg) { Map<String,String> gfg = new HashMap<String,String>(); // enter name/url pair gfg.put("GFG", "geeksforgeeks.org"); gfg.put("Practice", "practice.geeksforgeeks.org"); gfg.put("Code", "code.geeksforgeeks.org"); gfg.put("Quiz", "quiz.geeksforgeeks.org"); // looping over keys for (String name : gfg.keySet()) { // search for value String url = gfg.get(name); System.out.println("Key = " + name + ", Value = " + url); } } } ``` **输出:** ``` Key = Quiz, Value = quiz.geeksforgeeks.org Key = Practice, Value = practice.geeksforgeeks.org Key = GFG, Value = geeksforgeeks.org Key = Code, Value = code.geeksforgeeks.org ``` 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 如何在 Java 中迭代任何 Map 如何在 Java 中迭代任何 Map 在 Java中迭代Map 的方法通常有五种。在本文中,我们将讨论所有这些,并研究它们的优缺点。首先,我们不能直接使用iterator... 朱雀/ 2021年08月14日 09:38/ 0 赞/ 10838 阅读
相关 迭代法(Java) 迭代法(iteration),是一种不断用变量的旧值递推出新值的解决问题的方法。迭代又分为递推(正推)和倒推法。 1.递推法: 从小规模的问题推解出大规模问题的一种方法, ╰+攻爆jí腚メ/ 2022年03月11日 09:35/ 0 赞/ 215 阅读
相关 Java迭代器 Java迭代器 > Java迭代器迭代器(Iterator)的作用是循环的代换。 使用迭代器(Iterator)举例: ① 迭代器while遍历列表 I Love The Way You Lie/ 2022年04月24日 08:52/ 0 赞/ 188 阅读
相关 学习Java中关于迭代 此处是百度所得:迭代 标准的定义: 在RUP中,迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。 小灰灰/ 2022年06月11日 07:27/ 0 赞/ 317 阅读
相关 jsp迭代list和map集合 其中要使用jstl标签库,需要导入jstl必要的jar包 <%@page import="cn.itcast.domain.Person"%> <%@page 悠悠/ 2022年08月12日 09:30/ 0 赞/ 196 阅读
相关 怎么在map上进行迭代(java) 在java中的map有很多种迭代方式,我们来看一下一些最常用的方式并且看一下他们的优点和缺点,因为java中的map都继承自Map接口,下边的接口适用于实现map接口的所有形式 短命女/ 2022年08月19日 04:52/ 0 赞/ 376 阅读
相关 Java中的迭代器 可迭代性是Java集合框架下的所有集合的一种共性,也就是把集合中的所有元素遍历一遍,迭代的过程需要依赖一个迭代器对象。 迭代器模式,又叫做游标模式,它的含义是 缺乏、安全感/ 2022年08月21日 03:10/ 0 赞/ 135 阅读
相关 python迭代器什么时候用_如何在python中使用迭代器 好吧,这里有很多python代码中的问题。在 从简单的开始while ip\['cp'\] != \[\]: 可以简单地写信给 ^\{pr2\}$ 当ip\['cp'\ 柔光的暖阳◎/ 2022年10月28日 00:59/ 0 赞/ 215 阅读
相关 java迭代list_在Java中迭代列表的方法 对于Java语言有些陌生,我试图使自己熟悉所有可能遍历列表(或其他集合)的方式(或至少是非病理性方式)以及每种方式的优缺点。 给定一个List list对象,我知道以下遍历所 川长思鸟来/ 2022年11月03日 05:46/ 0 赞/ 244 阅读
相关 map迭代器中的first和second C++ 里面的map容器的迭代器里first 和 second 例如 map<string, int> m; m["one"] = 1; map< 谁借莪1个温暖的怀抱¢/ 2023年05月22日 08:45/ 0 赞/ 123 阅读
还没有评论,来说两句吧...