this 질문의 해결책을 사용하여 LinkedHashMap
에 문자열 값을 정렬하고 있습니다. 그러나 정렬은 단순히 작동하지 않습니다. 여기에 내가 작성한 코드가있다. 자바 8 스트림을 사용하여 HashMap 문자열 값을 정렬하지 않습니다.
Map<Integer, String> sortedMap = myMap.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toMap(Map.Entry<Integer, String>::getKey,
Map.Entry<Integer, String>::getValue));
myMap = new LinkedHashMap<Integer, String>(sortedMap);
이상한 것은
모두comparingByValue
및
comparingByKey
방법을 사용하는 경우는
Integer
키를 정렬된다는 것이다. 따라서 정확하게 정렬하고 있습니다.
String
값은 아니지만 두 경우 모두
Integer
키입니다. 나는 내가 여기서 잘못하고있는 것을 이해하지 못한다.
내 생각 엔'Collectors.toMap'는, 해시 맵에서 그들을 수집하는 순서를 파괴하고 있다는 것이다. –
그건 의미가 있습니다. 그러나, 그것은 여전히 정수 키의 정렬을 설명하지 않습니다. –
정수는 정수 값 자체가 해시로 사용됨에 따라 정렬 된 것처럼 보이지만 더 많은 정수를 추가하자마자 동일한 물통으로 끝나는 여러 항목을 다시 칠하기 때문에 다른 순서를 얻을 수 있습니다. –