先创建一个泛型List
List<Person> personList = new ArrayList<>();
personList.add(new Person("Lisa",20));
personList.add(new Person("Jack",21));
personList.add(new Person("Tom",21));
1、过滤符合条件的内容
//过滤出年龄小于21的人
personList.stream().filter(x -> x.getAge() < 21).collect(Collectors.toList());
2、类型转换
personList.stream().map(Person::getAge).collect(Collectors.toList());
3、计算成员变量的值
//求和:第一个参数0代表起始值为0
personList.stream().map(Person::getAge).reduce(0,(a,b)->a+b);
//求乘积:第一个参数1代表起始值为1
personList.stream().map(Person::getAge).reduce(1,(a,b)->a*b);
4、遍历各个元素
//打印各个元素
personList.stream().forEach(System.out::println);
5、将元素的值转变成一个大List
List<String> list = new ArrayList()<>;
list.add("aaa bbb ccc");
list.add("ddd eee fff");
list.add("ggg hhh iii");
list.stream().map(x -> x.split(" ")).flatMap(Arrays::stream).collect(Collectors.toList());
6、分组
Map<Integer,List<Person>> map = personList.stream().collect(groupingBy(Person::getAge));
打印输出:
{
20=[Person(name=Lisa, age=20)],
21=[Person(name=Jack, age=21), Person(name=Tom, age=21)]
}
7、区分
Map<boolean,List<Person>> map = personList.stream().collect(partitioningBy(x -> x.getAge() < 21));
打印输出:
{
false=[Person(name=Jack, age=21), Person(name=Tom, age=21)],
true=[Person(name=Lisa, age=20)]
}
8、BigDecimal累加
order.getTrsPriceDetailList().stream().filter(x->x.getSoTotal()!=null).map(DeliverOrderTrsPriceResponse::getSoTotal).reduce(BigDecimal.ZERO, BigDecimal::add)
9、List转Map
Map<Integer,String> map = personList.stream().collect(Collectors.toMap(Person::getAge,Person::getName));