zoukankan      html  css  js  c++  java
  • java8 stream流操作

    
    // 利用stream流中的TreeSet去重
    		List<ResourceTaskWhiteListVo> distinctWhiteList = whiteListVoList.stream()
    				.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getEnv() + "|" + o.getShortName() + "|" + o.getSoftwareType() + "|" + o.getInstanceCode() ))), ArrayList::new));
    
    // 获取空字符串的数量
            List<String> strings1 = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
            long count = strings1.parallelStream().filter(string -> string.isEmpty()).count();
    
    // list转为map
            Map<String,Object> map = person.stream().collect(Collectors.toMap(Person::getName,Person::getAge));
    
    //获取实体类list中的某一字段值
            List<String> listString = resourceRuleTaskDetailList.stream().map(ResourceRuleTaskDetail::getSystemEnName).collect(Collectors.toList());
            List<String> listString1 = resourceRuleTaskDetailList.stream().map(s -> s.getSystemEnName()).collect(Collectors.toList());
    
            //输出列表中最大的数
            //1.写法一
            LongSummaryStatistics stats = resourceRuleTaskDetailList.stream().mapToLong(s -> s.getTaskId()).summaryStatistics();
    
            //写法二
            Long min = resourceRuleTaskDetailList.stream().mapToLong(s -> s.getTaskId()).min().getAsLong();
            Long max = resourceRuleTaskDetailList.stream().mapToLong(s -> s.getTaskId()).max().getAsLong();
            Long sum = resourceRuleTaskDetailList.stream().mapToLong(s -> s.getTaskId()).sum();
            Double avg = resourceRuleTaskDetailList.stream().mapToLong(s -> s.getTaskId()).average().getAsDouble();
    
     //按照taskId分组,并取第一条数据
            Map<Long,ResourceManageTaskHistory> taskHistoryMap = historyList.stream().collect(Collectors.groupingBy(ResourceManageTaskHistory::getTaskId, Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
            // map转为list
            List<ResourceManageTaskHistory> taskHistoryList = taskHistoryMap.entrySet().stream().map(en -> en.getValue()).collect(Collectors.toList());
    
     //过滤白名单系统信息
            List<String> systemWhiteEnNameList = Arrays.asList("abc", "asd", "bc", "efg", "abcd","", "jkl");
            List<ResourceRuleTaskDetail> filter = resourceRuleTaskDetailList.stream().filter(s -> !systemWhiteEnNameList.contains(s.getSystemEnName())).collect(Collectors.toList());
    
     // 交集
            List<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(Collectors.toList());
    
     // 差集 (list1 - list2)
            List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());
    
     // 差集 (list2 - list1)
            List<String> reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(Collectors.toList());
    
     // 并集
            List<String> listAll = list1.parallelStream().collect(Collectors.toList());
            List<String> listAll2 = list2.parallelStream().collect(Collectors.toList());
            listAll.addAll(listAll2);
    每天一点点,惊喜不间断
  • 相关阅读:
    PDF太大怎么办?缩小PDF的4种常用方法
    电脑插上网线无法连接网络完美解决方案
    HTTP攻击与防范-跨站攻击-01简介
    HTTP攻击与防范-跨网站脚本攻击
    HTTP攻击与防范-PHP客户端脚本攻击
    HTTP攻击与防护-函数注入攻击
    HTTP攻击与防范-命令注入攻击
    重置NSX防火墙策略
    NBU8.1安装
    Vcenter由Win2008r2迁移到linux
  • 原文地址:https://www.cnblogs.com/wszn-java/p/14718164.html
Copyright © 2011-2022 走看看