인스턴트 타임 스탬프 목록을 그룹화하고 자연 순서로 정렬하려고합니다.Java StreamAPI : 인스턴트 키로 맵을 정렬하지 않습니다.
@Test
public void testName() throws Exception {
List<Instant> asList = Arrays.asList(createInstants());
Map<Instant, List<Instant>> collect = asList.stream().sorted().collect(Collectors.groupingBy((Instant instant) -> instant));
System.out.println(collect);
}
public Instant[] createInstants() {
Instant instant1 = Instant.from(ZonedDateTime.of(2016, 12, 25, 12, 25, 30, 0, ZoneId.systemDefault()));
Instant instant2 = Instant.from(ZonedDateTime.of(2013, 8, 11, 13, 33, 45, 0, ZoneId.systemDefault()));
Instant instant3 = Instant.from(ZonedDateTime.of(2010, 3, 15, 13, 33, 45, 0, ZoneId.systemDefault()));
return new Instant[] { instant1, instant2, instant3 };
}
하지만 작동하지 않는 것 같습니다. 대신에 :
{2016-12-25T11:25:30Z=[2016-12-25T11:25:30Z], 2013-08-11T11:33:45Z=[2013-08-11T11:33:45Z],2010-03-15T12:33:45Z=[2010-03-15T12:33:45Z]}
메신저이 점점 :
{2016-12-25T11:25:30Z=[2016-12-25T11:25:30Z], 2010-03-15T12:33:45Z=[2010-03-15T12:33:45Z], 2013-08-11T11:33:45Z=[2013-08-11T11:33:45Z]}
을 즉 : 결과가 정렬되지 않습니다. 왜?
'Collectors.groupingBy'는이'지도'를 결과의 분류 - 다움에 대해 어떻게 보증을합니까? –
'List'를 스트리밍 할 필요는 없습니다. 그냥'Arrays.stream (createInstants())'를 사용하십시오. – shmosel