zoukankan      html  css  js  c++  java
  • java stream 处理

    List<Long> projectIds = projectRestDTOS.stream().map(ProjectRestDTO::getProjectId).collect(
                    Collectors.toList());
      List<String> uniqueKeys = controlList.stream().map(r -> r.getUniqueKey()).
                    distinct().collect(Collectors.toList());
        public List<SiteDTO> querySiteList(List<Long> siteIds) {
            if (CollectionUtils.isEmpty(siteIds)) {
                return Lists.newArrayList();
            }
            Long firstNonNullSiteId = siteIds.stream()
                .filter(Objects::nonNull)
                .findFirst()
                .orElse(null);
            Long tenantId = SalUtils.calcTenantId(firstNonNullSiteId);
            ResultData<List<SiteDTO>> result = siteService.findSitesDetail(siteIds, tenantId);
            return SalUtils.unboxResult(result);
        }

    根据类转换成:map:

    import java.util.Arrays;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
     
    import org.junit.Test;
     
    /**
     * Created by Jackielee on 2017
     * @author: lizhilong
     * @date:   2017-11-24 10:13:57   
     * @Copyright: 2017 www.aliyun.com Inc. All rights reserved.
     */
    public class DemoListToMap {
        List<Student> list = Arrays.asList(new Student(1, 18, "阿龙", GenderColumn.BOY.getCode()),
                                           new Student(2, 17, "小花", GenderColumn.GIRL.getCode()),
                                           new Student(3, 17, "阿浪", GenderColumn.LADYBOY.getCode()));
        @Test
        public void listToMapByObjectValue(){
            // value 为对象 student -> student jdk1.8返回当前对象
            Map<Integer, Student> map = list.stream().collect(Collectors.toMap(Student::getId, student -> student));
            // 遍历打印结果
            map.forEach((key, value) -> {
                System.out.println("key: " + key + "    value: " + value);
            });
        }
        @Test
        public void listToMapByNameValue(){
            // value 为对象中的属性
            Map<Integer, String> map = list.stream().collect(Collectors.toMap(Student::getId, Student::getName));
            map.forEach((key, value) -> {
                System.out.println("key: " + key + "    value: " + value);
            });
        }
    
     

    java 8 list的stream操作 list中的对象中的某一个成员取出转为该成员的list,以及对象过滤,筛选某个属性后的成员

     

    取成员属性list

    List<String> configList = codeEntityList.stream().map(t -> t.getName()).distinct().collect(Collectors.toList());

    对象的过滤

    list.stream().filter(body-> body.getId().equals(entity1.getId())).findAny().get();

     

    //跟据某个属性分组

    Map<String, List<PersonData>> collect = list.stream().collect(Collectors.groupingBy(PersonData::getType));

     //根据某个属性分组,汇总某个属性

     Map<String, Integer> collect2 = list.stream().collect(Collectors.groupingBy(PersonData::getType,Collectors.summingInt(PersonData::getAge)));

     

    //根据某个属性添加条件过滤数据,

     list = list.stream().filter(u -> !u.getType().equals("访客")).collect(Collectors.toList());

    //判断一组对象里面有没有属性值是某个值

     boolean add = list.stream().anyMatch(m -> "王五".equals(m.getName()));

     //取出一组对象的某个属性组成一个新集合

    List<String> names=list.stream().map(PersonData::getName).collect(Collectors.toList());
    复制代码
    List<类> list; 代表某集合
     
    //返回 对象集合以类属性一升序排序
     
    list.stream().sorted(Comparator.comparing(类::属性一));
     
    //返回 对象集合以类属性一降序排序 注意两种写法
     
    list.stream().sorted(Comparator.comparing(类::属性一).reversed());//先以属性一升序,结果进行属性一降序
     
    list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()));//以属性一降序
     
    //返回 对象集合以类属性一升序 属性二升序
     
    list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二));
     
    //返回 对象集合以类属性一降序 属性二升序 注意两种写法
     
    list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二));//先以属性一升序,升序结果进行属性一降序,再进行属性二升序
     
    list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二));//先以属性一降序,再进行属性二升序
     
    //返回 对象集合以类属性一降序 属性二降序 注意两种写法
     
    list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一升序,升序结果进行属性一降序,再进行属性二降序
     
    list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一降序,再进行属性二降序
     
    //返回 对象集合以类属性一升序 属性二降序 注意两种写法
     
    list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二).reversed());//先以属性一升序,升序结果进行属性一降序,再进行属性二升序,结果进行属性一降序属性二降序
     
    list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一升序,再进行属性二降序<br><br><br>
    复制代码

    参考:java 8 list的stream操作 list中的对象中的某一个成员取出转为该成员的list,以及对象过滤,筛选某个属性后的成员

  • 相关阅读:
    js 和 jquery 动态创建元素
    京东火车票正式上线:开卖火车票!
    网易旗下新域名泰坦尼克曝光:要出航海题材新作
    Facebook CEO扎克伯格造访日本,获首相会见
    struts2教程系列
    hadoop方面的资料
    FlexViewer入门资料
    深入浅出Flex Viewer系列
    flex css
    【Flex4中的皮肤使用组件数据】系列
  • 原文地址:https://www.cnblogs.com/aspirant/p/12490252.html
Copyright © 2011-2022 走看看