如何使用java流从包含多个不同mysql日期的列表对象中获取映射对象
如何使用Java8流从包含多个不同MySQL日期的列表对象中获取一个map对象,该对象包含键作为字符串,值作为列表对象 例如:如何使用java流从包含多个不同mysql日期的列表对象中获取映射对象,java,java-stream,Java,Java Stream,如何使用Java8流从包含多个不同MySQL日期的列表对象中获取一个map对象,该对象包含键作为字符串,值作为列表对象 例如: List listObj = new ArrayList<>(); listObj.add("2018-04-21"); listObj.add("2018-05-20"); listObj.add("2018-04-22"); listObj.add("2018-03-29"); listObj.add("2018-03-10"); 您可以分析
List listObj = new ArrayList<>();
listObj.add("2018-04-21");
listObj.add("2018-05-20");
listObj.add("2018-04-22");
listObj.add("2018-03-29");
listObj.add("2018-03-10");
您可以分析到日期并按月分组:
List<String> listObj = new ArrayList<>(); //use String type argument
// ... add elements
Map<Month, List<LocalDate>> map = listObj.stream()
.map(LocalDate::parse)
.collect(Collectors.groupingBy(LocalDate::getMonth));
如果您需要映射
,则可以将最后一行更改为
...collect(Collectors.groupingBy(date -> date.getMonth().toString(),
Collectors.mapping(LocalDate::toString, Collectors.toList())));
final Map Map=listObj
.stream()
.collect(Collectors.groupingBy(v->LocalDate.parse(v).getMonth().name());
for(String-date:listObj){java.sql.date.valueOf(date);String-keymount=Month.of(sqlDate.getMonth()+1.name();if(mapObj.containsKey(keymount)){mapObj.get(keymount).add(sqlDate);}else{List-List-List-List=new arrararaylist();List.add(sqlDate);mapObj.put(keymount,List);}}到目前为止您尝试了什么?向我们展示您的工作示例中没有“多个不同的MySQL日期”。在一种特殊的、非常常见的日期格式中,只有字符串
s。
{MAY=[2018-05-20], MARCH=[2018-03-29, 2018-03-10], APRIL=[2018-04-21, 2018-04-22]}
...collect(Collectors.groupingBy(date -> date.getMonth().toString(),
Collectors.mapping(LocalDate::toString, Collectors.toList())));
final Map<String, List<String>> map = listObj
.stream()
.collect(Collectors.groupingBy(v -> LocalDate.parse(v).getMonth().name()));