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;