随笔 - 424  文章 - 0  评论 - 89  阅读 - 48万

stream流,转set和map

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.mayikt.stream;
 
import com.mayikt.entity.UserEntity;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
 
public class Test01 {
    public static void main(String[] args) {
        List<UserEntity> userEntityList = new ArrayList<>();
        userEntityList.add(new UserEntity("mayikt", 20));
        userEntityList.add(new UserEntity("meite", 28));
        userEntityList.add(new UserEntity("zhangsan", 35));
        userEntityList.add(new UserEntity("xiaowei", 16));
        userEntityList.add(new UserEntity("xiaowei", 16));
 
        /**
         * 创建stream两种方式
         * 1.串行流
         * 2.并行流
         */
        Stream<UserEntity> stream = userEntityList.stream();
 
        /**
         * 转换成set集合
         */
        Set<UserEntity> userSet = stream.collect(Collectors.toSet());
        userSet.forEach(userEntity -> System.out.println(userEntity));
 
        /**
         * stream将list转换成map
         * list集合只有元素,此处将user的userName作为key,user对象作为value,转map
         */
        /*
        Map<String, UserEntity> userEntityMap = userSet.stream().collect(Collectors.toMap(new Function<UserEntity, String>() {
            @Override
            public String apply(UserEntity userEntity) {
                return userEntity.getUserName();
            }
        }, new Function<UserEntity, UserEntity>() {
            @Override
            public UserEntity apply(UserEntity userEntity) {
                return userEntity;
            }
        }));
        */
        Map<String, UserEntity> userEntityMap = userSet.stream()
                .collect(Collectors.toMap(userEntity -> userEntity.getUserName(), userEntity -> userEntity));
        userEntityMap.forEach((k, v) -> System.out.println(k + "," + v));
 
        /**
         * Stream reduce求和
         */
        Stream<Integer> integerStream = Stream.of(10, 50, 30 ,20);
        Optional<Integer> reduce = integerStream.reduce((a1, a2) -> a1 + a2);
        System.out.println(reduce.get());
    }
}

  

注意:stream转set的时候,set是去重的,因此UserEntity要重写equals和hashCode。

UserEntity:

复制代码
package com.mayikt.entity;

import java.util.Objects;

public class UserEntity {

    private String userName;
    private int age;

    public UserEntity(String userName, int age) {
        this.userName = userName;
        this.age = age;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        UserEntity that = (UserEntity) o;
        return age == that.age &&
                Objects.equals(userName, that.userName);
    }

    @Override
    public int hashCode() {

        return Objects.hash(userName, age);
    }

    @Override
    public String toString() {
        return "UserEntity{" +
                "userName='" + userName + '\'' +
                ", age=" + age +
                '}';
    }
}
复制代码

 

posted on   有点懒惰的大青年  阅读(1683)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示