首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >List,Map 三种遍历方式:(总结理解)

List,Map 三种遍历方式:(总结理解)

作者头像
默 语
发布2024-11-20 11:07:09
发布2024-11-20 11:07:09
1.1K0
举报
文章被收录于专栏:JAVAJAVA
List,Map 三种遍历方式:(总结理解)

博主 默语带您 Go to New World.个人主页—— 默语 的博客👦🏻 《java 面试题大全 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨

☀️相关笔记章节:

🌹java 1.8 stream使用总结(个人总结有一些经典文章的集合)

🌹遍历 ArrayList和遍历 Map的几种方式

🌹Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)

🌹List,Map多层循环嵌套Demo及其理解

🌹List,Map 三种遍历方式:(总结理解)

🌹List<Map<String, Object>>,Map<String,List<Map<String, Object>>>多方式循环遍历

当处理ListMap这两种数据结构时,有以下三种常见的遍历方式:

1. 增强for循环(Enhanced For Loop):

增强for循环是一种简化遍历的方式,适用于List

Map

List遍历: 遍历List中的元素,对每个元素执行操作。

代码语言:javascript
复制
for (ElementType element : list) {
    // 操作element
}

Map遍历: 遍历Map中的键值对,对每对键值对执行操作。

代码语言:javascript
复制
java复制代码for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // 操作key和value
}

2. 迭代器(Iterator)遍历:

迭代器是一种通用的遍历方式,适用于ListMap

List遍历: 使用迭代器遍历List中的元素,对每个元素执行操作。

代码语言:javascript
复制
java复制代码Iterator<ElementType> iterator = list.iterator();
while (iterator.hasNext()) {
    ElementType element = iterator.next();
    // 操作element
}

Map遍历: 使用迭代器遍历Map中的键,对每个键执行操作,然后根据键获取对应的值。

代码语言:javascript
复制
java复制代码Iterator<KeyType> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
    KeyType key = iterator.next();
    ValueType value = map.get(key);
    // 操作key和value
}

3. Lambda表达式遍历(仅适用于Java 8及以上):

Lambda表达式提供一种更简洁的遍历方式,适用于ListMap

List遍历: 使用Lambda表达式遍历List中的元素。

代码语言:javascript
复制
java复制代码list.forEach(element -> {
    // 操作element
});

Map遍历: 使用Lambda表达式遍历Map中的键值对。

代码语言:javascript
复制
java复制代码map.forEach((key, value) -> {
    // 操作key和value
});

选择合适的遍历方式取决于您的编程习惯、代码简洁性以及特定情况下的性能需求。当处理ListMap这两种数据结构时,有以下三种常见的遍历方式:

1. 增强for循环(Enhanced For Loop):

增强for循环是一种简化遍历的方式,适用于ListMap

List遍历: 遍历List中的元素,对每个元素执行操作。

代码语言:javascript
复制
java复制代码for (ElementType element : list) {
    // 操作element
}

Map遍历: 遍历Map中的键值对,对每对键值对执行操作。

代码语言:javascript
复制
java复制代码for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // 操作key和value
}

2. 迭代器(Iterator)遍历:

迭代器是一种通用的遍历方式,适用于ListMap

List遍历: 使用迭代器遍历List中的元素,对每个元素执行操作。

代码语言:javascript
复制
java复制代码Iterator<ElementType> iterator = list.iterator();
while (iterator.hasNext()) {
    ElementType element = iterator.next();
    // 操作element
}

Map遍历: 使用迭代器遍历Map中的键,对每个键执行操作,然后根据键获取对应的值。

代码语言:javascript
复制
java复制代码Iterator<KeyType> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
    KeyType key = iterator.next();
    ValueType value = map.get(key);
    // 操作key和value
}

3. Lambda表达式遍历(仅适用于Java 8及以上):

Lambda表达式提供一种更简洁的遍历方式,适用于ListMap

List遍历: 使用Lambda表达式遍历List中的元素。

代码语言:javascript
复制
java复制代码list.forEach(element -> {
    // 操作element
});

Map遍历: 使用Lambda表达式遍历Map中的键值对。

代码语言:javascript
复制
java复制代码map.forEach((key, value) -> {
    // 操作key和value
});

选择合适的遍历方式取决于您的编程习惯、代码简洁性以及特定情况下的性能需求。

代码语言:javascript
复制
package com.example.democrud.democurd.Prototype.demo01;

import java.util.*;

public class Demo4 {


    public static void main(String[] args) {
        // List的三种遍历方式:
        listTest();

        System.out.println("------------------方法分割-----------------------");

        //Map的三种遍历方式:
        mapTest();
    }

    public static void mapTest() {
        HashMap<String, String> map = new HashMap<>();
        map.put("孙悟空", "老大");
        map.put("猪八戒", "老三");
        map.put("唐三藏", "老二");
        map.put("沙悟净", "老四");
        //表示将map对象的所有key值已set集合的形式返回
        Set<String> set = map.keySet();
        for (String s : set) {
            //s就是key的值 s1是value
            String s1 = map.get(s);
            System.out.println("键:" + s + "- 值:" + s1);
        }
        System.out.println("-----------------------------");

        /**
         * entrySet()
         将原有Map集合中的键值作为一个整体返回Set集合
         再将包含键值对对象的Set集合转化为Iterator接口对象,
         然后获取集合中的所有的键值对映射关系,
         在从映射关系中取出键和值
         *
         */


        Set<Map.Entry<String, String>> set01 = map.entrySet();
        for (Map.Entry<String, String> entry : set01) {

            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println("键:" + key + "- 值:" + value);
        }
        System.out.println("-----------------------------");


/**
 * map.entrySet().iterator();
 * 首先是map.entrySet()是把HashMap类型的数据转换成集合类型;
 * 然后是获得map的迭代器,用作遍历map中的每一个键值对;
 * iterator()是去获得这个集合的迭代器,保存在iter里面;
 */


        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {

            Map.Entry<String, String> next = iterator.next();
            String key = next.getKey();
            String value = next.getValue();
            System.out.println("键:" + key + "- 值:" + value);
        }

        System.out.println("-----------------------------");
        System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
        for (String v : map.values()) {
            System.out.println("value= " + v);
        }


    }


    public static void listTest() {
        List<String> list = new ArrayList<>();

        list.add("孙悟空");
        list.add("唐三藏");
        list.add("猪八戒");
        list.add("沙悟净");

        String string = list.toString();
        System.out.println(string);


        System.out.println("-----------------------------");

        for (String s : list) {
            System.out.println(s);
        }

        System.out.println("-----------------------------");

        for (int i = 0; i < list.size(); i++) {

            String s = list.get(i);
            System.out.println(s);


        }
        System.out.println("-----------------------------");


        Iterator<String> iterator = list.iterator();

        while (iterator.hasNext()) {

            String next = iterator.next();
            System.out.println(next);

        }

    }

}

运行结果如下:

代码语言:javascript
复制
[孙悟空, 唐三藏, 猪八戒, 沙悟净]
-----------------------------
孙悟空
唐三藏
猪八戒
沙悟净
-----------------------------
孙悟空
唐三藏
猪八戒
沙悟净
-----------------------------
孙悟空
唐三藏
猪八戒
沙悟净






------------------方法分割-----------------------




键:孙悟空- 值:老大
键:沙悟净- 值:老四
键:猪八戒- 值:老三
键:唐三藏- 值:老二
-----------------------------
键:孙悟空- 值:老大
键:沙悟净- 值:老四
键:猪八戒- 值:老三
键:唐三藏- 值:老二
-----------------------------
键:孙悟空- 值:老大
键:沙悟净- 值:老四
键:猪八戒- 值:老三
键:唐三藏- 值:老二
-----------------------------
通过Map.values()遍历所有的value,但不能遍历key
value= 老大
value= 老四
value= 老三
value= 老二
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • List,Map 三种遍历方式:(总结理解)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档