使用Java1.8代码案例

本文通过Java 1.8的特性,详细介绍了如何从list集合中抽取getId字段形成新集合、按getId字段进行分组、去重、按字段分组、实现集合合并以及利用joining方法拼接字段和计算元素出现次数的方法,展示了Java 1.8在处理数据方面的高效和便利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从list集合中抽取getId字段为新的集合

List<String> plateNoIds = dtoList.stream().map(TracePointVehicleLogDTO::getPlateNo).filter(Objects::nonNull).distinct().collect(Collectors.toList());

从list集合按getId字段进行分组

List<Obj>  list= service.queryList();
Map<Integer, List<Obj>> collect = list.stream().collect(Collectors.groupingBy(Obj::getId));

从list集合中使用java1.8 去重 

List<User> setList = eachUser.stream()
                    .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getDay))), ArrayList::new));

从list集合中使用Java1.8按getId字段分组

 list<Object> list = servcie.list();
Map<String, VehicleTrace> vehicleTraceMap = list .stream().collect(Collectors.toMap(VehicleTrace::getId, Function.identity(), (key1, key2) -> key1));

从list集合中使用Java1.8实现处理数据,集合合并

//处理数据,集合合并
//list1,list2为搜索出的两个集合
resultList = list1.stream().map(m -> {
list2.stream().filter(m2-> Objects.equals(m.getTypeId(),m2.getTypeId())).forEach(m2-> {
                m.setNum(m2.getNum());
                m.setScores(m2.getScores());
            });
            return m;
        }).collect(Collectors.toList()); 

从list集合中使用Java1.8循环匹配合并list,根据共同字段合并集合 

 
 public static void main(String[] args) {
        List<MemberInformationDomain> memberInformationDomainList = Lists.newArrayList();
        //会员卡信息数据
        List<MemberInfoNumDomain> memberInfoNumDomainList = Lists.newArrayList();
 
        MemberInformationDomain informationDomain = new MemberInformationDomain();
        informationDomain.setMemberId(1L);
        informationDomain.setNickname("满");
        MemberInformationDomain informationDomain1 = new MemberInformationDomain();
        informationDomain1.setMemberId(2L);
        informationDomain1.setNickname("满");
        memberInformationDomainList.add(informationDomain);
        memberInformationDomainList.add(informationDomain1);
 
        MemberInfoNumDomain numDomain = new MemberInfoNumDomain();
        numDomain.setMemberId(1L);
        numDomain.setAccountMergeNum(2);
        numDomain.setEntityCardNum(2);
        numDomain.setHoldCardNum(4);
        numDomain.setVirtualCardNum(6);
        numDomain.setJointlyCardNum(1);
        memberInfoNumDomainList.add(numDomain);
 
        memberInformationDomainList.stream().forEach(infoList -> {
            memberInfoNumDomainList.stream().forEach(numList -> {
                if (infoList.getMemberId().equals(numList.getMemberId())) {
                    infoList.setAccountMergeNum(numList.getAccountMergeNum());
                    infoList.setHoldCardNum(numList.getHoldCardNum());
                    infoList.setEntityCardNum(numList.getEntityCardNum());
                    infoList.setJointlyCardNum(numList.getJointlyCardNum());
                    infoList.setVirtualCardNum(numList.getVirtualCardNum());
                }
            });
        });
        System.out.println("得到的集合对象为:" + memberInformationDomainList);
    }
    

从list中取出一个指定字段 .joining拼接字符

//joining的用法,中间用逗号分割,前面加个start,后面加上end
        String newTitle = favoriteGroupList.stream().map(FavoriteGroup::getTitle).collect(
            Collectors.joining(",", "start", "end")).toString();
//拼接"-"字符
userOrgInfoList.stream().map(OrgsDTO::getName).collect(Collectors.joining("-"))

从list中计算出现次数,计数 

Map<String, Long> traceCountMap = dtoList.stream().collect(Collectors.groupingBy(PersonArchiveDTO::getPersonIdNumber, Collectors.counting()));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值