栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Map的几种遍历方式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Map的几种遍历方式

实体类
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@ToString
@Builder
public class Person {

    Integer id;
    String name;
    Integer age;

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}
一、entrySet
        List list = Arrays.asList(
                Person.builder().id(1).name("张三").age(20).build(),
                Person.builder().id(2).name("李四").age(20).build(),
                Person.builder().id(3).name("王五").age(20).build(),
                Person.builder().id(4).name("麻溜").age(20).build());
        Map map = list.stream().collect(toMap(Person::getId, p -> p));
        //entrySet for
        for (Map.Entry entry : map.entrySet()) {
            System.out.println("k=="+entry.getKey());
            System.out.println("v=="+entry.getValue());
        }
        //stream流可以过滤一下
        map.entrySet().stream()
                .filter(p -> p.getKey() != 1)
                .forEach(p -> System.out.println("k==" + p.getKey() + "n" + "v==" + p.getValue()));
    }

遍历结果

//过滤完之后的结果
k==2
v==Person(id=2, name=李四, age=20)
k==3
v==Person(id=3, name=王五, age=20)
k==4
v==Person(id=4, name=麻溜, age=20)
二、迭代器遍历

使用迭代器的时候while会报黄警告,强迫症患者还是使用第一种吧

        List list = Arrays.asList(
                Person.builder().id(1).name("张三").age(20).build(),
                Person.builder().id(2).name("李四").age(20).build(),
                Person.builder().id(3).name("王五").age(20).build(),
                Person.builder().id(4).name("麻溜").age(20).build());
        Map map = list.stream().collect(toMap(Person::getId, p -> p));
        Iterator> iterator = map.entrySet().iterator();
        while(iterator.hasNext()){
            Map.Entry entry = iterator.next();
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }

遍历结果

1
Person(id=1, name=张三, age=20)
2
Person(id=2, name=李四, age=20)
3
Person(id=3, name=王五, age=20)
4
Person(id=4, name=麻溜, age=20)
三、keySet
        List list = Arrays.asList(
                Person.builder().id(1).name("张三").age(20).build(),
                Person.builder().id(2).name("李四").age(20).build(),
                Person.builder().id(3).name("王五").age(20).build(),
                Person.builder().id(4).name("麻溜").age(20).build());
        Map map = list.stream().collect(toMap(Person::getId, p -> p));
        for (Integer key : map.keySet()) {
            System.out.println(key);
            System.out.println(map.get(key));
        }

遍历结果

1
Person(id=1, name=张三, age=20)
2
Person(id=2, name=李四, age=20)
3
Person(id=3, name=王五, age=20)
4
Person(id=4, name=麻溜, age=20)
四、values

这种方式获取不到key,使用的时候可以斟酌一下

        List list = Arrays.asList(
                Person.builder().id(1).name("张三").age(20).build(),
                Person.builder().id(2).name("李四").age(20).build(),
                Person.builder().id(3).name("王五").age(20).build(),
                Person.builder().id(4).name("麻溜").age(20).build());
        Map map = list.stream().collect(toMap(Person::getId, p -> p));
        for (Person value : map.values()) {
            System.out.println(value);
        }

遍历结果

Person(id=1, name=张三, age=20)
Person(id=2, name=李四, age=20)
Person(id=3, name=王五, age=20)
Person(id=4, name=麻溜, age=20)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/307036.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号