项目踩坑:List和Set的互转

因业务需要,要在Set中插入有序的字段。Set不能用下标遍历,因此将Set转为List后,遍历插入数据。

//查询的set
Set<UserRankInfo> userRankInfos = rankService.listWeekRank();
//转为list
List<UserRankInfo> collect = userRankInfos.stream().map(e -> {
//do something
}).collect(Collectors.toList());
//遍历插入
for (int i = 0; i < collect.size(); i++) {
            RankRewardsRuleDao rankRewardsRuleDao = rankRewardsRuleMapper.getRuleByType("1");
            try {
                Class<?> clazz = rankRewardsRuleDao.getClass();
                Field[] fs = clazz.getDeclaredFields();
                Field field = fs[i+3];
                field.setAccessible(true);
                Object obj = field.get(rankRewardsRuleDao);
                collect.get(i).setReward("¥ "+obj);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }

但是如果将List转为Set的话 会导致排序错误。因此需要使用排序。

result.stream().sorted(Comparator.comparing(UserRankInfo::getYieldRate).reversed());

猜你喜欢

转载自blog.csdn.net/codeLife1993/article/details/88538157
今日推荐