filter (根据类型(type=1、type=2),获取type=1的newList)
newList = list.stream().filter(bean -> "1".equals(bean.getType())).collect(Collectors.toList());
map (将List中的type字段,组成newList)
newList = list.stream().map(Bean::getType).collect(Collectors.toList());
// 若需要执行其他操作
newList = list.stream().map(item -> {
to do something
}
toMap(将List中的id、type字段,组成newMap)
newMap = list.stream().collect(Collectors.toMap(Bean::getId, Bean::getType));
groupingBy (按照type分组,返回Map<key,List)
Map<Integer, List<Bean>> map = new HashMap<Long, List<Bean>>();
map = list.stream().collect(Collectors.groupingBy(Bean::getType));
// 循环map、对分组数据进行处理
for (Integer type : map.keySet()) {
List<Bean> keyList = map.get(type);
}
groupingBy (按照type分组,计算个数、返回List<Map<String, Object>>)
List<Map<String, Object>> listMap = list.stream().collect(Collectors.groupingBy(Bean::getType, Collectors.counting())).entrySet().stream().map(entry -> {
Map<String, Object> map = new HashMap<>();
map.put("type", entry.getKey());
map.put("count", entry.getValue());
return map;
}).collect(Collectors.toList());
sorted (根据type类型降序排列)
newList = list.stream().filter(item -> item.getType() !=null ).collect(Collectors.toList())
.stream().sorted(Comparator.comparing(Bean::getType).reversed()).collect(Collectors.toList());
reversed(为空放置最后)
newList = list.stream().sorted(Comparator.comparing(Bean::getType,Comparator.nullsLast(Integer::compareTo))
.reversed()).collect(Collectors.toList());
anyMatch (抽出ListA的数据,要满足ListA的id=ListB的id相等)
newList = listA.stream().filter(BeanA -> listB.stream()
.anyMatch(BeanB -> beanB.getId().equals(BeanB.getId()))).collect(Collectors.toList());
mapToDouble (求list中Double字段平均值)
avg = list.stream().mapToDouble(Double::doubleValue).average().orElse(0.00);
collect(返回list中某字段,用逗号分隔)
返回String类型
newStr = list.stream().filter(item -> StringUtils.isEmpty(item.getId()))
.collect(Collectors.mapping(item1 -> ConvUtils.convToString(item1.getId()), Collectors.joining(",")));
返回Map类型(获取重复Num数据)
newMap = list.stream().filter(item -> !StringUtils.isEmpty(item.getId()))
.collect(Collectors.groupingBy(Bean::getId,
Collectors.mapping(item -> ConvUtils.convToString(item.getNum()),
Collectors.joining(","))))
.entrySet().stream().filter(item -> item.getValue().chars().filter(ch -> ch == ',').count() >= 1)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
======================================= 以上有问题、欢迎留言========================================