栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java8 流式处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java8 流式处理

1、获取流
2、中间操作 流的链式操作
filter distinct skip limit
map flatmap
3、终端操作
allmatch anymatch nonematch findfirst
reduce sum count
collect
Collectors count max sum min max partition group

package gcdemo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

@Data
@Accessors(chain = true)
@AllArgsConstructor
public class User {

    private int id;
    private String userName;
    private int age;
    private int money;

    public static void main(String[] args) {
        User a = new User(11, "apple", 23,100);
        User b = new User(12,"balance",23,120);
        User c = new User(13,"control",22,300);
        User d = new User(14,"double",28,300);
        User e =  new User(15,"effect",26,400);
        User f =  new User(15,"effect",26,400);

        //todo 1、中间操作
        List users = Arrays.asList(a, b, c, d, e,f);
        //1.1、过滤操作

        //filter 筛选id为偶数的人
        System.out.println(users.stream().filter(t -> {
            return t.id % 2 == 0;
        }).collect(Collectors.toList()));

        //distinct去重 根据equals方法去重
        System.out.println(users.stream().distinct().collect(Collectors.toList()));

        //limit 返回前n个元素
        System.out.println(users.stream().limit(2).collect(Collectors.toList()));

        //skip 跳过n个元素
        System.out.println(users.stream().skip(2).collect(Collectors.toList()));

        //1.2、映射
        //map 返回所有用户姓名
        System.out.println(users.stream().map(t -> {
            return t.userName;
        }).collect(Collectors.toList()));

        //flatmap  对用户名字母去重
        System.out.println(users.stream().map(t -> {
            return t.userName.split("");
        }).flatMap(Arrays::stream).distinct().collect(Collectors.toList()));

        //todo 2、终端操作
        //查找
        //allMatch 是否所有人年满18岁
        System.out.println(users.stream().allMatch(i->{
            return i.getAge()>18;
        }));

        //anyMatch 任意满足 年龄==22
        System.out.println(users.stream().anyMatch(i->{
            return i.getAge()==22;
        }));

        //noneMatch 不存在满足
        System.out.println(users.stream().noneMatch(i->{
            return i.getAge()>18;
        }));

        //findFirst 查询满足条件的第一个  findAny返回任意一个 并行流式处理中性能比findFirst好一点
        System.out.println(users.stream().findFirst());

        //规约
        //sum 对用户钱求和
        System.out.println(users.stream().mapToInt(t->{return t.money;}).sum());
        System.out.println(users.stream().mapToInt(t->{return t.money;}).reduce(Integer::sum));
        //收集之规约
        System.out.println(users.stream().count());
        System.out.println(users.stream().collect(Collectors.counting()));

        //年龄最大的人
        System.out.println(users.stream().collect(Collectors.maxBy((s1,s2)->{
            return s1.getAge()-s2.getAge();
        })));

        //年龄之和
        System.out.println(users.stream().collect(Collectors.summingInt(s->{return s.getAge();})));
        //年龄的均值
        System.out.println(users.stream().collect(Collectors.averagingInt(s->{return s.getAge();})));
        //分析 IntSummaryStatistics{count=6, sum=149, min=22, average=24.833333, max=28}
        System.out.println(users.stream().collect(Collectors.summarizingInt(s->{return s.getAge();})));
        //字符串拼接
        System.out.println(users.stream().map(i->{return i.getUserName();}).
                collect(Collectors.joining("-")));

        //收集之分组
        //按年龄分组
        System.out.println(users.stream().
                collect(Collectors.groupingBy(User::getAge)));

        //按年龄分组 再按钱分组
        System.out.println(users.stream().
                collect(Collectors.groupingBy(User::getAge,Collectors.groupingBy(User::getMoney))));

        //分区 年龄分界
        System.out.println(users.stream().
                collect(Collectors.partitioningBy(t->{
                    return t.getAge()>23;
                })));

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591073.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号