당신이 사용할 수 없습니다 제공 TreeMap
에 자바 (8) 우리는 사용 할 수 toMap () 메서드에서 Collectors
어떤 매개 변수 다음 걸립니다를 :
- keymapper : 키를 생성하는 매핑 기능
- valuemapper : 값을 생성하는 매핑 함수
- mergeFunction : 동일한 키와 연관된 값 사이의 충돌을 해결하는 데 사용되는 병합 함수
- mapSupplier : 결과가 삽입 될 비어있는 새 맵을 리턴하는 함수입니다.
자바 8 예제
Map<String,String> sample = new HashMap<>(); // push some values to map
Map<String, String> newMapSortedByKey = sample.entrySet().stream()
.sorted(Map.Entry.<String,String>comparingByKey().reversed())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));
Map<String, String> newMapSortedByValue = sample.entrySet().stream()
.sorted(Map.Entry.<String,String>comparingByValue().reversed())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1,e2) -> e1, LinkedHashMap::new));
커스텀 비교기를 사용하고 다음과 같이 키를 기준으로 정렬하도록 예제를 수정할 수 있습니다.
Map<String, String> newMapSortedByKey = sample.entrySet().stream()
.sorted((e1,e2) -> e1.getKey().compareTo(e2.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1,e2) -> e1, LinkedHashMap::new));