public static void main(String[] args) { List<Student> list = new ArrayList<>(); list.add(new Student("A",10,LocalDateTime.now())); list.add(new Student("B",11,LocalDateTime.now().minus(2, ChronoUnit.MONTHS))); list.add(new Student("C",12,LocalDateTime.now().minus(2, ChronoUnit.MONTHS))); list.add(new Student("D",13,LocalDateTime.now().minus(3, ChronoUnit.MONTHS))); Map<String, List<Student>> map = list.stream().collect(Collectors.groupingBy(t -> t.getDateTime().format(DateTimeFormatter.ofPattern("yyyy-MM")))); } static class Student{ private String name; private Integer age; private LocalDateTime dateTime; public Student(String name, Integer age, LocalDateTime dateTime) { this.name = name; this.age = age; this.dateTime = dateTime; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public LocalDateTime getDateTime() { return dateTime; } public void setDateTime(LocalDateTime dateTime) { this.dateTime = dateTime; } }