ホームページ >Java >&#&チュートリアル >Java で HashMap を値で並べ替えるにはどうすればよいですか?

Java で HashMap を値で並べ替えるにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-27 14:56:12717ブラウズ

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

値による HashMap の並べ替え

値による HashMap の並べ替えは、さまざまなプログラミング シナリオで便利な操作です。このタスクを効率的に実行するには、Java の組み込み機能を活用し、カスタムの並べ替えロジックを実装します。

Java ラムダとストリームの使用:

Java 8 のラムダ式とstreams は、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。