CollectionUtils.isEmpty,subList

本文详细探讨了Java中两个常用的集合操作:CollectionUtils.isEmpty()方法用于检查集合是否为空,以及List的subList()方法用于获取列表的子列表。通过实例解析它们的使用场景和注意事项,帮助开发者更好地理解和运用这些工具。

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

    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");

        list = list.subList(4, 4);
        System.out.println(list);//[]

        System.out.println(CollectionUtils.isEmpty(list));//true
    }
org.apache.commons.collections.CollectionUtils

end

public BaseResponse<PagingResponse<CompetitionInfo>> getSingleCompetitionRecordList(final GetSingleCompetitionRecordListRequestDto requestDto) { List<Long> competitionIds = competitionContestantService.getCompetitionIdsByUserIdAndMode(requestDto.getUserId(), CompetitionMode.SINGLE.getValue()); PagingResponse<CompetitionInfo> response = new PagingResponse<>(); response.setTotalCount(competitionIds.size()); response.setPageSize(requestDto.getPageSize()); response.setPageNum(requestDto.getPageNum()); if (competitionIds.isEmpty()) { return BaseResponse.success(response); } // 根据比赛创建时间倒序 competitionIds.sort(Collections.reverseOrder()); List<Long> partitionIds = PageUtil.partitionList(competitionIds, requestDto.getPageSize(), requestDto.getPageNum()); List<CompetitionPo> competitions = competitionService.getCompetitionsByIds(new HashSet<>(partitionIds)); List<CompetitionContestantPo> contestants = competitionContestantService.getContestantsByCompetitionIds(partitionIds); // 根据时间区间、通路列表、指标、参赛人员获取指标数据 Map<String, Supplier<Map<String, String>>> parallelMap = new HashMap<>(); List<CompetitionInfo> competitionInfos = competitions.stream() .map(competition -> { CompetitionInfo competitionInfo = new CompetitionInfo(competition); // 蓝色参赛人员 CompetitionContestantPo blueContestant = contestants.stream() .filter(item -> item.getCompetitionId().equals(competition.getId()) && ContestantIdentity.BLUE.getValue().equals(item.getContestantIdentity())) .findFirst() .orElse(new CompetitionContestantPo()); // 红色色参赛人员 CompetitionContestantPo redContestant = contestants.stream() .filter(item -> item.getCompetitionId().equals(competition.getId()) && ContestantIdentity.RED.getValue().equals(item.getContestantIdentity())) .findFirst() .orElse(new CompetitionContestantPo()); // 蓝色比赛人员信息 CompetitionUserInfo blueUserInfo = new CompetitionUserInfo(blueContestant); competitionInfo.setBlueUserInfo(blueUserInfo); // 红色比赛人员信息 CompetitionUserInfo redUserInfo = new CompetitionUserInfo(redContestant); competitionInfo.setRedUserInfo(redUserInfo); // 当前用户身份 contestants.stream() .filter(item -> StringUtils.equals(item.getUserId(), requestDto.getDsId())) .findFirst() .ifPresent(contestant -> competitionInfo.setCurrentDsIdentity(contestant.getContestantIdentity())); // 根据比赛状态判断是否需要请求指标数据 int competitionStatus = competition.getStatus(); if (Objects.equals(CompetitionStatus.FINISH.getValue(), competitionStatus)) { competitionInfo.setBlueTotalAmount(blueContestant.getAmount()); competitionInfo.setRedTotalAmount(redContestant.getAmount()); // 已完赛的比赛,需要计算分数 int result = blueContestant.getAmount().compareTo(redContestant.getAmount()); if (result > 0) { blueUserInfo.setScore(CompetitionScore.WIN_POINT.getValue()); redUserInfo.setScore(CompetitionScore.LOSE_POINT.getValue()); } else if (result < 0) { blueUserInfo.setScore(CompetitionScore.LOSE_POINT.getValue()); redUserInfo.setScore(CompetitionScore.WIN_POINT.getValue()); } else { blueUserInfo.setScore(CompetitionScore.DRAW_POINT.getValue()); redUserInfo.setScore(CompetitionScore.DRAW_POINT.getValue()); } } if (Objects.equals(CompetitionStatus.ACCEPTED.getValue(), competitionStatus)) { // 进行中的比赛,需要获取指标数 List<String> userIds = new ArrayList<>(); userIds.add(blueContestant.getUserId()); userIds.add(redContestant.getUserId()); GetDsListMeasureReqBo reqBo = new GetDsListMeasureReqBo(userIds, competition.getStartTime(), competition.getEndTime(), Arrays.asList(competition.getAccess().split(",")), competition.getMeasureName()); parallelMap.put(String.valueOf(competition.getId()), () -> getDsListMeasure(reqBo)); } return competitionInfo; }) .collect(Collectors.toList()); if (MapUtils.isNotEmpty(parallelMap)) { // 并发获取指标数据 Map<String, Map<String, String>> amountsMap = AsyncUtils.parallelExecute(parallelMap, 10); competitionInfos.forEach(competitionInfo -> { Map<String, String> amounts = amountsMap.get(String.valueOf(competitionInfo.getCompetitionId())); competitionInfo.setBlueTotalAmount(amounts.get(competitionInfo.getBlueUserInfo().getUserId())); competitionInfo.setRedTotalAmount(amounts.get(competitionInfo.getRedUserInfo().getUserId())); }); } response.setList(competitionInfos); return BaseResponse.success(response); }帮我补一下这个方法的单测
最新发布
07-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十六画生的博客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值