Lambda操作集合

集合

Lambda(stream)操作集合

过滤集合(得到一个对象)

Object object = list.stream()
                .filter(item -> item.get*().equals("*"))
                .findFirst()
                .get();

过滤集合(得到一个集合)

List objectList = list.stream()
                .filter(item -> item.get*().equals("*"))
                .collect(Collectors.toList());
 
    
   

将集合对象中的某个值提取出来

List collect = list.stream()
                //也可以 map(item->item.get字段())
                .map(对象::get字段)
                .collect(Collectors.toList());
 
    
   

集合去重

List objectList = list.stream()
                .distinct()
                .collect(Collectors.toList());
 
    
   

集合统计 ((.mapToDouble))

double sum = list.stream()
                //不同类型用不同方法
                .mapToDouble(Object::get字段)
                //求和 sum 最大 max 最小 min 平均 average
                .sum();

集合统计(BigDecimal类型需要特殊处理)

BigDecimal reduce = orderDTOList.stream()
                //过滤去除 null(有null会报错)
                .filter(item -> item.getPrice() != null)
                .map(Object::getPrice)
                //只用求和方法就行,因为有初始值(BigDecimal.ZERO),最大最小会把初始值算进去
                .reduce(BigDecimal.ZERO, BigDecimal::add);

分组

//一个字段分组
Map> map = list.stream()
                .collect(Collectors.groupingBy(Object::get字段)); 
//多个字段分组
Map> map = list.stream()
                .collect(Collectors.groupingBy(o -> o.get字段1+"_"+o.get字段2+...)); 
//自定义分组
Map> map = list.stream()
                .collect(Collectors.groupingBy(o -> {
                    //逻辑代码
                    return 分组条件;
                }));

排序

list.sort((o1,o2) -> o2.get字段().compareTo(o1.get字段()));

集合转string(指定字符分割)

//import com.google.common.base.Joiner;
Joiner.on(",").join(list)

你可能感兴趣的:(java,stream,lambda,filter,大数据)