Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mengisih Java HashMap mengikut Nilai dalam Susunan Menaik dan Menurun?

Bagaimana untuk Mengisih Java HashMap mengikut Nilai dalam Susunan Menaik dan Menurun?

Susan Sarandon
Susan Sarandonasal
2024-11-26 17:38:15583semak imbas

How to Sort a Java HashMap by Values in Ascending and Descending Order?

Isih Peta Hash mengikut Nilai

Di Java, struktur data HashMap menyediakan cara yang mudah untuk menyimpan pasangan nilai kunci. Walau bagaimanapun, jika anda perlu mengakses data berdasarkan nilai yang dikaitkan dengan kekunci, menyusun HashMap mengikut nilai adalah perlu.

Isih Peta Hash dalam Susunan Menaik

Satu pendekatan untuk mengisih HashMap mengikut nilai ialah menggunakan aliran Java 8. Coretan kod berikut menunjukkan cara melakukan ini dalam tertib menaik:

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class SortHashMapByValues {

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

        // Sort the HashMap by values in ascending order
        Map<Integer, String> sortedMapAsc = unsortedMap.entrySet()
                .stream()
                .sorted(Map.Entry.comparingByValue())
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (oldValue, newValue) -> oldValue, LinkedHashMap::new));

        // Key, Value : 2, abby
        // Key, Value : 5, daisy
        // Key, Value : 3, denver
        // Key, Value : 4, frost
        // Key, Value : 1, froyo
        System.out.println(sortedMapAsc);
    }
}

Mengisih Peta Hash dalam Susunan Menurun

Untuk mengisih Peta Hash mengikut nilai dalam tertib menurun, ubah suai sedikit coretan kod di atas:

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class SortHashMapByValues {

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

        // Sort the HashMap by values in descending order
        Map<Integer, String> sortedMapDesc = unsortedMap.entrySet()
                .stream()
                .sorted(Map.Entry.<Integer, String>comparingByValue().reversed())
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (oldValue, newValue) -> oldValue, LinkedHashMap::new));

        // Key, Value : 1, froyo
        // Key, Value : 4, frost
        // Key, Value : 3, denver
        // Key, Value : 5, daisy
        // Key, Value : 2, abby
        System.out.println(sortedMapDesc);
    }
}

Kod ini akan keluarkan HashMap yang diisih dengan kekunci yang mewakili kunci asal dan nilai yang diisih dalam tertib menurun. Kedua-dua contoh tertib menaik dan menurun menggunakan LinkedHashMap untuk mengekalkan susunan sisipan, memastikan kekunci dikaitkan dengan betul dengan nilai yang diisih.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Java HashMap mengikut Nilai dalam Susunan Menaik dan Menurun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn