java8集合的流式操作-实用案例

1、filter(arg) 筛选出来arg为true的组成新的集合

List<String> list = Arrays.asList("name", "name1", "name2", "a");
List<String> list1 = list.stream().filter(nl -> nl.contains("name")).collect(Collectors.toList());
System.out.println("list1:" + list1.toString());

输出结果

list1:[name, name1, name2]

2、findFirst 返回第一个匹配的

// findFirst 返回第一个匹配的,结合orElse,如果没有符合条件的就返回null
String result1 = list.stream().filter(nl -> nl.equals("name")).findFirst().orElse(null);
System.out.println("result1:" + result1);

输出结果

result1:name

3、toMap 集合转换为map,以student的某个字段为key,当前student为value

        List<Student> students = new ArrayList<>();
        students.add(new Student(1,"zhangsan"));
        students.add(new Student(2,"lisi"));
        // toMap 集合转换为map,以student的某个字段为key,当前student为value
        Map<Integer, Student> map1 = students.stream().collect(Collectors.toMap(Student::getStuNumber, Function.identity()));
        map1.keySet().forEach(nl->{
            System.out.println(nl+":"+map1.get(nl).toString());
        });

输出结果

1:stuName:zhangsan,stuNumber:1
2:stuName:lisi,stuNumber:2

4、mapToInt 获取student stuNumber字段

students.stream().mapToInt(Student::getStuNumber).forEach(System.out::println);

输出结果

1
2

5、groupingBy 通过某个字段分组输出map,key为分组标识,value为匹配当前标识的集合

        students = new ArrayList<>();
        students.add(new Student(1,"zhangsan"));
        students.add(new Student(2,"lisi"));
        students.add(new Student(2,"lisiBro"));
        // groupingBy 通过某个字段分组输出map,key为分组标识,value为匹配当前标识的集合
        Map<Integer, List<Student>> collectStu = students.stream().collect(Collectors.groupingBy(Student::getStuNumber));
        collectStu.keySet().forEach(nl -> {
            System.out.println("key:"+nl+","+collectStu.get(nl).toString());
        });

输出结果

key:1,[stuName:zhangsan,stuNumber:1]
key:2,[stuName:lisi,stuNumber:2, stuName:lisiBro,stuNumber:2]

定义Student类

    public static class Student{
        int stuNumber;
        String stuName;

        Student(int stuNumber,String stuName){
            this.stuName = stuName;
            this.stuNumber = stuNumber;
        }

        public String getStuName() {
            return stuName;
        }

        public int getStuNumber() {
            return stuNumber;
        }

        public String toString() {
            return "stuName:"+ this.stuName+",stuNumber:"+this.getStuNumber();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值