1. 程式人生 > >List<DTO>轉 Map<String,List<DTO>> 兩種寫法

List<DTO>轉 Map<String,List<DTO>> 兩種寫法

            List<TeamScheduleDTO> list = JSON.parseArray(response.getData().getJSONArray("list").toJSONString(), TeamScheduleDTO.class);
            // guava寫法
/*            Map<String, List<TeamScheduleDTO>> allMap = Multimaps.asMap(Multimaps.index(list1,
                    new Function<TeamScheduleDTO, String>() {
                        @Override
                        public String apply(TeamScheduleDTO input) {
                            String dateStr = DateFormatUtils.format(input.getMatchDateTime(), "yyyy-MM-dd");
                            return dateStr;
                        }
                    }));
*/ // jdk8寫法 Map<String, List<TeamScheduleDTO>> allMap = list1.stream().collect(Collectors.groupingBy(input -> DateFormatUtils.format(input.getMatchDateTime(), "yyyy-MM-dd"))); List<String> dateList = new ArrayList<>(); for (Map.Entry<String, List<TeamScheduleDTO>> entry : allMap.entrySet()) { dateList.add(entry.getKey()); } dateList.sort((o1, o2)
-> DateUtils.toDate(o1).compareTo(DateUtils.toDate(o2))); List<TeamScheduleReturnDTO> returnDTOList = new ArrayList<>(); for (String str : dateList) { TeamScheduleReturnDTO dto = new TeamScheduleReturnDTO(); dto.setShowDate(str); dto.setRelScheduleList(allMap.get(str)); returnDTOList.add(dto); }
return returnDTOList;