以下是java8 流式处理的一些常用方法,可以在以后做查看用
package com.fisher.drools.springbootdrools.lamda;
import com.graphbuilder.struc.LinkedList;
import java.util.DoubleSummaryStatistics;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* @author 凌晨四点
* @version 1.0
* @desc In a real app, don't leave an instantiated stream unconsumed, as that will lead to memory leaks.
* @date 2021年11月24日 16:08
*/
public class CollectionUseDemo {
public static void main(String[] args) {
List<Product> products = IntStream.range(1, 100).mapToObj(index -> {
Product product = new Product();
product.setAddress("address : " + index);
product.setName("productName:=" + index);
product.setPrice(new Random().nextDouble());
return product;
}).collect(Collectors.toList());
//将集合中的元素的某个字段拿出来做一个新的集合
List<String> collect = products.stream().map(Product::getName).collect(Collectors.toList());
System.out.println(collect);
//目标集合中提取转化需要的部分转化成一个新的集合,并使用分隔符,前缀 ,后缀拼成一个整个的字符串
String target = products.stream().map(Product::getName).collect(Collectors.joining("@@", "[", "]"));
System.out.println(target);
//集合元素中所有的求平均值
Double averagePrice = products.stream().collect(Collectors.averagingDouble(Product::getPrice));
System.out.println(averagePrice);
//集合元素中求和
Double collect1 = products.stream().mapToDouble(Product::getPrice).sum();
System.out.println(collect1);
//收集统计信息非常重要的
DoubleSummaryStatistics summaryStatistics = products.stream().collect(Collectors.summarizingDouble(Product::getPrice));
System.out.println(summaryStatistics);
//通过一个给定的信息分区
Map<Boolean, List<Product>> partitions = products.stream().collect(Collectors.partitioningBy(product -> product.getPrice() > 0.02));
System.out.println(partitions);
//自定义collector 收集器,转化不同的结果
Collector<Object, LinkedList, LinkedList> listCollector = Collector.of(LinkedList::new, LinkedList::addToTail, (first, second) -> {
first.addToTail(second);
return first;
});
LinkedList collect2 = products.stream().collect(listCollector);
System.out.println(collect2);
}
}