集合
Lambda(stream)操作集合
过滤集合(得到一个对象)
Object object = list.stream()
.filter(item -> item.get*().equals("*"))
.findFirst()
.get();
过滤集合(得到一个集合)
List<Object> objectList = list.stream()
.filter(item -> item.get*().equals("*"))
.collect(Collectors.toList());
将集合对象中的某个值提取出来
List<Object> collect = list.stream()
//也可以 map(item->item.get字段())
.map(对象::get字段)
.collect(Collectors.toList());
集合去重
List<Object> 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<String, List<Object>> map = list.stream()
.collect(Collectors.groupingBy(Object::get字段));
//多个字段分组
Map<String, List<Object>> map = list.stream()
.collect(Collectors.groupingBy(o -> o.get字段1+"_"+o.get字段2+...));
//自定义分组
Map<String, List<Object>> 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)