Java8新特性:stream计算

package JAVA_stream学习;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;

import static java.util.stream.Collectors.toList;

public class streamlearn {

    public static void main(String[] args) {

        List<Person> list  = new ArrayList<>();

        list.add(new Person(23,"zhangsan"));
        list.add(new Person(24,"wangsi"));
        list.add(new Person(25,"zhaowu"));

        //    .collect(toList()) 把Stream中的流转换为list类型
        //    list.stream()   把list转换为stream类型

        //过滤person的age=23的person元素
        list=list.stream().filter(Person -> Person.getAge()==23)
                .collect(toList());

        //按照age进行排序
        list= list.stream().sorted((p1,p2) -> p1.getAge()- p2.getAge())
                .collect(toList());

        //去除前n个数据
        list = list.stream().skip(2)
                .collect(toList());

        //获取前n个数据
        list= list.stream().limit(2)
                .collect(toList());

        // map
        List<Integer> newlist = new ArrayList<>();
        newlist=list.stream().map(Person::getAge)
                .collect(toList());
        //这时候的 newlist元素就是person的age的元素

        //flatmap(T -> stream<R>)
        //将流中的每一个元素都映射一个流,再把每一个流连接成为一个流
        List<String> list1  = new ArrayList<>();
        list1.add("aaa bbb ccc");
        list1.add("ddd eee fff");
        list1.add("ggg hhh iii");
        list1 = list1.stream().map(s -> s.split(" ")).flatMap(Arrays::stream)
                .collect(toList());

        //reduce((T,T)->T) or reduce(T,(T,T) -> T)
        //把list的age相加
        int sum = list.stream().map(Person::getAge)
                .reduce(0,(a,b)->a+b);

        //count()计算个数   collect()
        //for each 循环
        list.stream().forEach(System.out :: println); //将list的数据挨个打印
        //比如像数据库中插入元素
        //list.stream().forEach(PersonMapper::insertPerson);

        /*
        流与数值流之间的转换
         */
        IntStream intStream = list.stream().mapToInt(Person::getAge);

        /*
        数值流的方法 : sum(), max() min() average()

        collect() 是收集方法,用的最多的是collect(toList()) collect(toSet())
        collect(groupBy(Person::getage))  分组,不建议个人使用
        collect(partitionBy(p ->p,getage() <=20))

         */






    }



}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你们卷的我睡不着QAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值