stream流

stream流

1.什么是Stream流

它是java8提供的新特性,可以申明式处理集合,提高开发效率,类似一种管道流操作

2.基本操作
2.1 过滤
public class StreamTest {
    public static void main(String[] args) {
        User a = new User(1, "a");
        User b = new User(2, "b");
        User c = new User(3, "c");
        ArrayList<User> users = new ArrayList<>();
        users.add(a);
        users.add(b);
        users.add(c);
        //1.过滤
        List<User> collect = users.stream().filter(user -> "a".equals(user.getName())).collect(Collectors.toList());
        System.out.println(collect);
    }
}

执行结果

在这里插入图片描述

2.2 取最值
public class StreamTest {
    public static void main(String[] args) {
        User a = new User(1, "a");
        User b = new User(2, "b");
        User c = new User(3, "c");
        ArrayList<User> users = new ArrayList<>();
        users.add(a);
        users.add(b);
        users.add(c);
		//最大值
        Optional<User> max = users.stream().max(Comparator.comparing(User::getId));
        //最小值
        Optional<User> min = users.stream().min(Comparator.comparing(User::getId));
        System.out.println(max);
        System.out.println(min);
    }
}

运行结果

在这里插入图片描述

2.3 排序

升序

public class StreamTest {
    public static void main(String[] args) {
        User a = new User(1, "a");
        User b = new User(2, "b");
        User c = new User(4, "c");
        User d = new User(3, "d");
        ArrayList<User> users = new ArrayList<>();
        users.add(a);
        users.add(b);
        users.add(c);
        users.add(d);
        //倒序的两种方式
        List<User> collect = users.stream().sorted(Comparator.comparing(User::getId, Comparator.reverseOrder())).collect(Collectors.toList());
        List<User> collect1 = users.stream().sorted(Comparator.comparing(User::getId).reversed()).collect(Collectors.toList());
        //升序(默认升序)
        List<User> collect2 = users.stream().sorted(Comparator.comparing(User::getId)).collect(Collectors.toList());
        collect.forEach(System.out::println);
        collect1.forEach(System.out::println);
        collect2.forEach(System.out::println);

    }
}

运行结果

在这里插入图片描述

2.4抽取属性

public class StreamTest {
    public static void main(String[] args) {
        User a = new User(1, "a");
        User b = new User(2, "b");
        User c = new User(4, "c");
        User d = new User(3, "d");
        ArrayList<User> users = new ArrayList<>();
        users.add(a);
        users.add(b);
        users.add(c);
        users.add(d);
        List<String> collect = users.stream().map(User::getName).collect(Collectors.toList());
        collect.forEach(System.out::println);
    }
}

运行结果

在这里插入图片描述

2.5 将属性转map

public class StreamTest {
    public static void main(String[] args) {
        User a = new User(1, "a");
        User b = new User(2, "b");
        User c = new User(4, "c");
        User d = new User(3, "d");
        ArrayList<User> users = new ArrayList<>();
        users.add(a);
        users.add(b);
        users.add(c);
        users.add(d);
        Map<Integer, String> collect = users.stream().collect(Collectors.toMap(User::getId, User::getName, (k1, k2) -> k1));
        System.out.println(collect);
    }
}

运行结果

在这里插入图片描述

去重

public class StreamTest {
    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("哈哈");
        arrayList.add("哈哈");
        arrayList.add("嘻嘻");
        arrayList.add("呵呵");
        System.out.println(arrayList);
        List<String> collect = arrayList.stream().distinct().collect(Collectors.toList());
        System.out.println(collect);
    }
}

分组统计

Map<String, DoubleSummaryStatistics> distributedAmountMap = extCashFlowDTOList.stream().
filter(e->e.getAmounts()!=null).collect(groupingBy(ExtCashFlowDTO::getName, Collectors.summarizingDouble(e->Double.parseDouble(e.getAmounts().toString()))));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值