list 按java8各种排序,求和计算

// 排序方式1 根据id 排序
List sort2 = xkmlMcDmBos.stream().sorted(Comparator.comparing(User::getId,     
                     Comparator.reverseOrder())).collect(Collectors.toList());
 
// 排序方式2 根据id 排序
List sort1 = list.stream().sorted((e1, e2) ->                             
                 Integer.compare(Integer.parseInt(e1.getId()),                 
                    Integer.parseInt(e2.getId()))).collect(Collectors.toList());
 
// 排序方式3 (List->String 排完序之后 转成为 name 的 List)
List sort2 = xkmlMcDmBos.stream().sorted(Comparator.comparing(User::getId, 
               Comparator.reverseOrder())).map(User::getName).
                collect(Collectors.toList());
 
// 排序方式4
List> sort3=  dataList.stream()
                .sorted(Comparator.comparing((Map x)  ->
                        Integer.parseInt(x.get("id").toString()))
                .reversed()).collect(Collectors.toList());
 
// 自己写一个取map参数的方法
public class GetMapValVo {
 
    public static Float comparingByXk(Map map){
        return Float.parseFloat((String) map.get("year"));
    }
 
}
// 未排序的List
List> res = new ArrayList<>();
// 接收排序的List
List> sortRes = new ArrayList<>();
sortRes = res.stream().sorted(Comparator.comparing(GetMapValVo::comparingByXk)).collect(Collectors.toList());

过滤

List filterList = list.stream().filter(x -> x.getName().equals("张三"))
                .collect(Collectors.toList());;

​​​​​​​int total = list.stream().mapToInt(x -> Integer.parseInt(x.getValue())).sum();
 
// 过滤加求和
​​​​​​​int total = list.stream().filter(x -> x.getName().equals("张三"))
            .mapToInt(x -> Integer.parseInt(x.getValue())).sum();

// 最大值
​​​​​​​int total = list.stream().mapToInt(x -> Integer.parseInt(x.getValue())).max();
 
// 最小值
​​​​​​​int total = list.stream().mapToInt(x -> Integer.parseInt(x.getValue())).mim();
 
// 平均值
​​​​​​​int total = list.stream().mapToInt(x -> Integer.parseInt(x.getValue())).average();

对对象中属性去重,(返回结果:属性为空+属性不为空并去重)相当于Sn为空判断加上不为空去重判断

                List distinctSnCell = device.getCellList().stream()
.filter(distinctByKey(CellEntity::getSn))
.collect(Collectors.toList());


    /**
     * 对对象中属性去重,(返回结果:属性为空+属性不为空并去重)
     *
     * @param keyExtractor
     * @param 
     * @return
     */
    public static  Predicate distinctByKey(Function keyExtractor) {
        Set seen = ConcurrentHashMap.newKeySet();
        return t -> {
            Object o = keyExtractor.apply(t);
            if (ObjectUtils.isEmpty(o)) {
                return true;
            }
            return seen.add(o);
        };
    }

// 对 code属性进行修改操作
boolean isFeiLiu = true;
        list
                .stream()
                .parallel()
                .peek(e -> {
                            if (isFeiLiu)
                                e.setSource(2);
                            else
                                e.setCode("132" + "-" +e.getCode());
                        }
                ).collect(Collectors.toList());

你可能感兴趣的:(java,开发语言)