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))
*/
}
}
Java8新特性:stream计算
最新推荐文章于 2024-06-06 08:47:06 发布