`
leeqq
  • 浏览: 138196 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Map的遍历

    博客分类:
  • JAVA
阅读更多

昨天写代码的时候遇到一个问题:

有如下Map,Map<String,List<String>>

对某个字符串,判断在map的哪个字符串list里,然后返回对应的key

首先想到是对map进行遍历,然后就懵了,从没有遍历过Map

 

后来上网查了一下,并查阅java的API,作出如下整理

 

查阅API得知Map提供了如下两个方法

Set<K> keySet() 返回此映射中包含的键的Set视图

Set<Map.Entry<K, V>> entrySet()    返回此映射中包含的映射关系的Set视图

对Map的遍历就着落在这两个方法上面了

 

先建一个Map然后对其进行遍历

Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");

 

第一种遍历方法,也是最自然的想法,如果可以得到所有的键值的数组或者list,对键值遍历,这个时候就可以通过键的值,调用get(Object key)方法获得对应的值了,代码如下

public void traversalMap(Map<String, String> map){
        Set<String> set = map.keySet();
        Object[] keys = set.toArray();
        for(Object key : keys){
            System.out.println("key: " + key + ", value: " + map.get(key));
        }
}

 输出结果:

key: key3, value: value3
key: key2, value: value2
key: key1, value: value1

 

然而这样似乎有些繁琐,既然通过Set<String> set = map.keySet(); 已经的到键的set,何不直接遍历,如下

public void traversalMap(Map<String, String> map){
        Set<String> set = map.keySet();
        for(String key : set){
            System.out.println("key: " + key + ", value: " + map.get(key));
        }
}

 

结果一样,输出所有键值对,这是对set直接用for进行遍历

当然也可以用Iterator进行遍历,如下

public void traversalMap(Map<String, String> map){
        Iterator<String> iterator = map.keySet().iterator();
        while(iterator.hasNext()){
            String key = iterator.next();
            System.out.println("key: " + key + ", value: " + map.get(key));
        }
}

 

下面是通过Set<Map.Entry<K, V>> entrySet() 方法完成对map的遍历

public void traversalMap(Map<String, String> map){
        Set<Map.Entry<String, String>> mapEntry = map.entrySet();
        Iterator<Map.Entry<String, String>> it = mapEntry.iterator();
        while(it.hasNext()){
            Map.Entry<String, String> entry = it.next();
            System.out.println("key: " + entry.getKey()
				 + ", value: " + entry.getValue());
        }
}

 

这里entrySet() 得到一个Set<Map.Entry<K, V>> 类型的set,然后通过Iterator对此set进行遍历

当然也可以直接采用for进行遍历

public void traversalMap3(Map<String, String> map){
        for(Map.Entry<String, String> entry : map.entrySet()){
            System.out.println("key: " + entry.getKey()
  				 + ", value: " + entry.getValue());
        }
}

 

和上面是类似的。

对于Map的遍历,大概就整理这些

分享到:
评论

相关推荐

    java Map 遍历方法

    ### Java Map遍历方法详解 在Java编程语言中,`Map`接口是集合框架中的一个核心组成部分,它存储键值对映射。本篇文章将详细介绍几种常用的遍历`Map`的方法,包括使用传统迭代器(Iterator)、增强型for循环(For-...

    map遍历的三种方法

    Map 遍历是集合操作中的一种重要操作,一般来说,有三种方式来遍历 Map 集合:使用 values() 方法遍历、使用 keySet() 方法遍历和使用 entrySet() 方法遍历。 第一种方法:使用 values() 方法遍历 这个方法是最...

    map遍历的四种方法

    ### Map遍历的四种方法 在Java编程语言中,`Map`是一种常用的数据结构,用于存储键值对。为了能够有效地处理和操作这些键值对数据,熟练掌握遍历`Map`的方法至关重要。本文将详细介绍四种不同的遍历`Map`的方式,并...

    struts2中的map遍历

    在Struts2中,Map遍历是一个常见的功能,它允许开发者动态地展示或操作存储在Map中的数据。这个功能在处理表单提交、传递参数或者在视图层展示数据时尤为有用。 首先,让我们理解Map遍历的基本概念。Map是一种键值...

    map遍历的四种方式及性能比较

    ### Java中遍历Map的四种方式及性能比较 在Java编程中,`Map`是一种非常重要的数据结构,用于存储键值对。对于`Map`的遍历,不同的遍历方式有着不同的性能表现以及适用场景。本文将详细介绍四种常见的遍历`Map`的...

    Map遍历方法总结

    ### Map遍历方法总结 #### 一、引言 在Java编程中,`Map`是一种常用的集合类型,用于存储键值对数据。由于其高效的数据查找特性,在许多场景下都有广泛的应用。对于开发者来说,了解如何有效地遍历`Map`中的元素是...

    JAVA8独有的map遍历方式(非常好用)

    以下是关于Java 8独有的Map遍历方式的详细说明: 1. **通过`Map.keySet()`遍历** 在Java 8之前,遍历Map的传统方式是通过`Map.keySet()`获取所有的键,然后用for-each循环遍历这些键并获取对应的值。在Java 8中,...

    List,Set和Map遍历读取[归类].pdf

    3. **Map遍历** Map是一个键值对的集合,不直接支持索引访问。有三种遍历Map的方法: - **方法一:通过keySet遍历** ```java Map, String&gt; map = new HashMap, String&gt;(); map.put("key1", "value1"); map....

    for循环中的map遍历没走的原因-原代码

    for循环中的map遍历没走的原因-原代码

    Java Map 遍历实例与效率比较

    主要提供java中的map的遍历实例及效率比较

    map的遍历方法 有几种? 帮你选择最好的遍历方式

    你知道map的遍历方法有几种吗? 那这几种的区别是什么呢? 那种更简单、高效呢? 我的资源文件将告诉你。

    Map遍历方法

    ### Map遍历方法详解 #### 一、引言 在Java编程中,`Map`是一种常用的集合类型,用于存储键值对数据。由于其高效的数据查找特性,在许多场景下都有广泛的应用。对于开发者来说,掌握如何有效地遍历`Map`中的元素是...

    C++11 unordered_map与map(插入,遍历,Find)效率对比。

    - `std::unordered_map`:遍历哈希表通常需要遍历所有桶,因此其时间复杂度也是O(n),但实际运行速度可能比`std::map`快,尤其是当元素数量很大时。 **查找操作**: - `std::map`:查找操作同样为O(log n),因为...

    java Map遍历方法

    这篇博文主要探讨了如何遍历Java中的`Map`对象,下面将详细介绍几种常见的遍历`Map`的方法。 1. **迭代器法**: Java提供了`Map`接口的`entrySet()`方法,返回一个包含`Map`中所有键值对的`Set`视图。通过这个`Set...

    Freemarker 遍历Map数据

    数据模型: @RequestMapping(/freemarker) @Controller public class FreemarkerController { //测试1 @RequestMapping(/test1) public String test1(Model model){ //向数据模型放数据 model.addAttribute(name...

    Java Map 遍历比较齐全的解析.docx

    总结,Java中遍历`Map`主要有四种方式,其中通过`Map.entrySet()`进行遍历通常被认为效率较高,尤其在`Map`容量较大的情况下。而在Java 8之后,我们可以利用Lambda表达式简化遍历操作。获取`Map`的长度直接调用`size...

    js遍历map javaScript遍历map的简单实现

    标题中提到的“js遍历map javaScript遍历map的简单实现”指的是如何在JavaScript中简单实现对Map对象的遍历。...对于真正要遍历JavaScript中的Map对象,读者需要掌握以上提供的更专门的Map遍历方法。

    MAP的遍历的讲解

    这是一人篇关于JAVA MAP遍历的讲解的文章,希望对你有用

    Java Map遍历方法

    Java Map遍历方法是编程中常见的操作,尤其是在处理键值对数据时。Map接口在Java中扮演着重要的角色,它提供了存储和检索键值对的能力。以下是对Java Map遍历方法的详细介绍: 1. **使用迭代器遍历**: 这是最基础的...

Global site tag (gtag.js) - Google Analytics