Java-Stream流的常用方法

总结一些Java中常用Stream流的常用方法,后续会慢慢更新!

一、实体类

  1. 简单创建实体类。
/**
 1. 实体
 */
@EntityScan
public class User implements Serializable {
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }



    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public void setId(Integer s, String username, String password) {
        this.id = s;
        this.username = username;
        this.password = password;
    }
}
  1. 新建实体,添加数据,方便以下进行练习。
        //实体类
        User user = new User();
        User user2 = new User();
        User user3 = new User();
        User user4 = new User();
        user.setId(123, "name1", "pwd1");
        user2.setId(213, "name2", "pdw2");
        user3.setId(321, "name3", "pwd3");
        user4.setId(312, "name4", "pwd4");
        ArrayList<User> list = new ArrayList<User>();
        list.add(user);
        list.add(user2);
        list.add(user3);
        list.add(user4);
        System.out.println("================================================");

二、list- stream简单使用

为方便,后续输出会使用Consumer进行简单输出。

public static int count = 3;
private static Consumer<User> userConsumer = userList -> System.out.println(userList);
  1. limit、sort
    Limit方法可以对流进行截取,只取用前n个,Stream limit(long maxSize)参数是一个long类型,如果集合当前长度大于参数则进行操作,反之则不进行操作,也不报错,limit方法是一个延迟方法,只是对流中的元素进行截取,返回的是一个新流,所以可以继续调用其他流中的方法。
    Sort方法可以根据自己要求进行字段排序。
        //list进行行数选择--根据任意字段进行排序
        list.stream().limit(count).sorted(
                (a, b) -> {
                    //可以设置排序条件
                    if (a.getUsername().equals(b.getUsername())) {
                        return b.getId() - a.getId();
                    } else {
                        return a.getId() - b.getId();
                    }
                }
        ).forEach(userConsumer);
        System.out.println("================================================");

运行结果

在这里插入图片描述

  1. 数组去重
        //数组去重
        list.stream().collect(
                collectingAndThen(
                        toCollection(() -> new TreeSet<>(Comparator.comparing(User::getId))), ArrayList::new
                )
        ).forEach(userConsumer);

        System.out.println("================================================");
  1. 过滤器
    filter可以过滤一个List对象,查找符合条件的对象集合。
        //list过滤器--过滤姓名包含数字2
        list.stream().filter(user1 -> !user1.getUsername().contains("2"))
                .collect(Collectors.toList())
                .stream().limit(count)
                .forEach(userConsumer);

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

运行结果
在这里插入图片描述

三、map- stream简单使用

  1. list转为map,并根据其中某个字段作为key和value
        /**
         * list to hashmap
         * 1。list转为map(值替换 - 1-key  2-value  3- newValue)
         */
        Map<String, User> map = list.stream().collect(
                Collectors.toMap(
                        User::getUsername,  //key
                        Function.identity(),    //value
                        (oldValue, newValue) -> newValue)  //将新的值替换原来的旧值;
        );
        map.forEach((a, b) -> System.out.println(a + ":" + b));

运行结果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值