java基础-jdk1.8-lambda表达式-stream-创新互联

一、List<对象>-stream
​Listlist = new ArrayList<>();
基础的一些使用
//遍历
list.forEach(x->System.out.println(x.getId()+"-"+x.getName()));
//删除符合条件的元素
list.removeIf(e ->Objects.isNull(e));
1、排序:

一个字段排:

创新互联是专业的密山网站建设公司,密山接单;提供成都网站建设、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行密山网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
//list自己本身的顺序发生了改变
//【升序】
list.sort(Comparator.comparing(User::getId));
//【降序】
list.sort(Comparator.comparing(User::getId).reversed());


//list自己本身的顺序不发生改变
list.stream().sorted(
      Comparator.comparing(User::getId, Comparator.naturalOrder()).reversed())
      .forEach(System.out::println);

两个字段排序:

//bya为第一个排序字段,升序    这个id相同时走第二个排序
Comparatorid= Comparator.comparing(User::getId);
//bya为第二个排序字段,降序.reversed()
Comparatorage= Comparator.comparing(User::getAge).reversed();
Collections.sort(list,id.thenComparing(age));



//自然比较器
//Comparator.naturalOrder()
//Comparator.nullsLast()  null排在最后面
//Comparator.nullsFirst()  null排在最前面
list.sort(
    Comparator.comparing(User::getAge,
        Comparator.nullsLast(Integer::compareTo))
            .thenComparing(User::getUserName,
                                Comparator.nullsFirst(String::compareTo))
2、分组:

一个字段分组:

Map>userGroupList=
           list.stream().collect(Collectors.groupingBy(User::getUserName));

两个字段分组-一起:

Map>voMap = 
                list.stream().collect(Collectors.groupingBy(
                a ->com.pcitc.kpi.utilis.util.StringUtils.format("{0}{1}",
                a.getOrgCode(), a.getUserName())));

两个字段分组-先后:

//先按年龄分组、再按性别分组
Map>>>userMap =
        list.collect(Collectors.groupingBy(
                UserD::getAge, Collectors.groupingBy(
                        User::getSex, Collectors.groupingBy((userDTO) ->{
                            if (userDTO.getSex().equals("男")) {
                                return 1;
                            } else {
                                return 0;
                            }
                        }))));
3、计算
//求和  
list.stream().map(User::getMoney).reduce(BigDecimal.ZERO,BigDecimal::add);

4、去重

一个字段去重:

// 根据name去重
list.stream().collect(
    Collectors.collectingAndThen(
            Collectors.toCollection(() ->new TreeSet<>(Comparator.comparing(User::getName))), ArrayList::new));
System.out.println("name去重后:"+collect.toString());

两个字段去重:

list.stream().collect(
    collectingAndThen(toCollection(() ->’
        new TreeSet<>(Comparator.comparing(o ->o.getName() + ";" 
                                          + o.getClassName() + ";" 
                                          + o.getSex()))), ArrayList::new));
System.out.println("多条件去重后:"+collect1.toString());

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文名称:java基础-jdk1.8-lambda表达式-stream-创新互联
文章起源:http://pwwzsj.com/article/dooocg.html