Stream操作集合流常见用法

List转为Map<String, List>

    public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        list.add(new User("1", "001", "name1"));
        list.add(new User("2", "002", "name2"));
        list.add(new User("3", "003", "name3"));
        list.add(new User("3", "003", "name03"));
        list.add(new User("3", "003", "name03"));
        Map<String, List<User>> map = list
        .stream()
        .collect(Collectors.groupingBy(User::getCode));
        System.out.println(map);
    }

List转Map<String,Object>

    public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        list.add(new User("1", "001", "name1"));
        list.add(new User("2", "002", "name2"));
        list.add(new User("3", "003", "name3"));
        Map<String, User> map = list.stream()
        .collect(Collectors.toMap(User::getId, Function.identity()));
        System.out.println(map);
    }

注意:
这里的key不能重复,重复会报错

在这里插入图片描述

key值重复

如果key值可能会重复,使用以下方式:

保留第一个值
    public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        list.add(new User("1", "001", "name1"));
        list.add(new User("2", "002", "name2"));
        list.add(new User("3", "003", "name3"));
        list.add(new User("3", "003", "name03"));
        list.add(new User("3", "003", "name003"));
        //如果id重复,保留现有的值
        Map<String, User> map = list
        .stream()
        .collect(Collectors.toMap(User::getId, Function.identity(), 
                                  (existing, replacement) -> existing));
        System.out.println(map);
    }
保留最新的值
    public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        list.add(new User("1", "001", "name1"));
        list.add(new User("2", "002", "name2"));
        list.add(new User("3", "003", "name3"));
        list.add(new User("3", "003", "name03"));
        list.add(new User("3", "003", "name003"));
        //如果id重复,保留新的值
        Map<String, User> map = list
        .stream()
        .collect(Collectors.toMap(User::getId, Function.identity(),
                                  (existing, replacement) -> replacement));
        System.out.println(map);
    }

去除集合中的重复元素

    /**
     * 去除集合中的重复元素
     */
    private static void distinct() {
        List<String> list = Arrays.asList("a", "b", "a", "c");
        list = list.stream().distinct().collect(Collectors.toList());
        list.forEach(System.out::println);
    }

获取集合中的第一个元素

    /**
     * 获取集合中的第一个元素
     */
    private static void getFirst() {
        List<String> list = Arrays.asList("a", "b", "c");
        String first = list.stream().findFirst().get();
        System.out.println(first);
    }

检查是否存在满足条件的元素

    /**
     * 检查是否存在满足条件的元素
     */
    private static void anyMatch() {
        List<String> list = Arrays.asList("a", "b", "c");
        boolean anyMatch = list.stream().anyMatch(s -> s.equals("a"));
        System.out.println(anyMatch);
    }

检查是否所有元素都满足条件

    /**
     * 检查是否所有元素都满足条件
     */
    private static void allMatch() {
        List<String> list = Arrays.asList("a", "b", "c");
        boolean allMatch = list.stream().allMatch(s -> s.length() == 1);
        System.out.println(allMatch);
    }

检查是否所有元素都不满足条件

    /**
     * 检查是否所有元素都不满足条件
     */
    private static void noneMatch() {
        List<String> list = Arrays.asList("a", "b", "c");
        boolean noneMatch = list.stream().noneMatch(s -> s.length() > 1);
        System.out.println(noneMatch);
    }
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值