> Java > java지도 시간 > Java에서 값을 기준으로 HashMap을 어떻게 정렬할 수 있나요?

Java에서 값을 기준으로 HashMap을 어떻게 정렬할 수 있나요?

Patricia Arquette
풀어 주다: 2024-11-27 14:56:12
원래의
706명이 탐색했습니다.

How Can I Sort a HashMap by its Values in Java?

HashMap을 값으로 정렬

HashMap을 값으로 정렬하는 것은 다양한 프로그래밍 시나리오에서 유용한 작업이 될 수 있습니다. 이 작업을 효과적으로 수행하기 위해 Java의 내장 기능을 활용하고 사용자 정의 정렬 논리를 구현할 수 있습니다.

Java 람다 및 스트림 사용:

Java 8의 람다 표현식 및 스트림 활용 스트림은 HashMap 정렬에 대한 간결하고 현대적인 접근 방식을 제공합니다. 다음 코드 조각은 이 기술을 보여줍니다.

import java.util.*;
import java.util.stream.Collectors;

public class HashMapSort {

    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1, "froyo");
        map.put(2, "abby");
        map.put(3, "denver");
        map.put(4, "frost");
        map.put(5, "daisy");

        // Sort the HashMap by values in ascending order
        Map<Integer, String> sortedMapAsc = map.entrySet()
                .stream()
                .sorted(Comparator.comparing(Map.Entry::getValue))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (a, b) -> b, LinkedHashMap::new));

        // Print the sorted map
        for (Map.Entry<Integer, String> entry : sortedMapAsc.entrySet()) {
            System.out.println(entry.getKey() + "," + entry.getValue());
        }
    }
}
로그인 후 복사

사용자 정의 정렬:

또는 비교기를 사용하여 사용자 정의 정렬 알고리즘을 구현할 수 있습니다. 이 접근 방식은 정렬 프로세스에 대한 더 많은 유연성과 제어를 제공합니다.

import java.util.*;

public class HashMapSort {

    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1, "froyo");
        map.put(2, "abby");
        map.put(3, "denver");
        map.put(4, "frost");
        map.put(5, "daisy");

        // Define a custom comparator to sort by values
        Comparator<Map.Entry<Integer, String>> comparator = new Comparator<>() {
            @Override
            public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
        };

        // Sort the HashMap by values in ascending order
        List<Map.Entry<Integer, String>> sortedList = new ArrayList<>(map.entrySet());
        sortedList.sort(comparator);

        // Print the sorted map
        for (Map.Entry<Integer, String> entry : sortedList) {
            System.out.println(entry.getKey() + "," + entry.getValue());
        }
    }
}
로그인 후 복사

결론적으로 HashMap을 해당 값으로 정렬하는 것은 Java 람다 및 스트림 또는 사용자 정의 비교기 구현을 포함한 다양한 기술을 사용하여 달성할 수 있습니다. 접근 방식의 선택은 애플리케이션의 특정 요구 사항과 상황에 따라 달라집니다.

위 내용은 Java에서 값을 기준으로 HashMap을 어떻게 정렬할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿