Cara Mengurutkan HashMap berdasarkan Kunci dan Nilai di Java 8 – Tutorial Lengkap
Diterbitkan: 2020-09-18
Di Java 8 – Bagaimana cara mengurutkan Peta?
Di Crunchify kami telah menulis hampir ~400 tutorial java dan yang satu ini merupakan tambahan untuk kategori Java8.
Saya suka koleksi Java dan memiliki banyak tutorial tentang Cara beralih melalui Peta dan Daftar, LinkedList, JSONArray, dan banyak lagi.
Dalam tutorial ini kita akan membahas cara terbaik untuk mengurutkan HashMap berdasarkan Kunci dan Nilai di Java8.
Mari kita mulai:
- Kami akan membuat kelas CrunchifySortMapByKeyValueJava8.java
- Buat HashMap<String, Integer> crunchifyMap dan itulah yang akan kita gunakan untuk mengurutkan berdasarkan Kunci dan Nilai.
-
For KEY
: kami akan menambahkan perusahaan acak dari daftar- Patter: Angka Acak antara 1 hingga 10 + (-) + 1 perusahaan dari daftar
- daftar perusahaan: crunchify.com, google.com, twitter.com
-
For VALUE
: kita akan menambahkan satu angka acak antara 1 hingga 50 - Kami akan mencetak Peta asli, Diurutkan berdasarkan Peta Kunci dan Diurutkan berdasarkan Peta Nilai
Peta.Entri.
comparingByKey()
mengembalikan pembanding yang membandingkan Map.Entry dalam urutan alami pada kunci.Peta.Entri.
comparingByValue()
mengembalikan pembanding yang membandingkan Map.Entry dalam urutan alami pada nilai.
Berikut adalah kode Java lengkap:
Silakan lihat dua pertanyaan yang disebutkan dalam kode di bawah ini dengan hati-hati Ini adalah utilitas sederhana untuk berjaga-jaga jika Anda ingin menggunakannya dalam proyek Anda.
- Bagaimana cara mendapatkan nilai Acak dari ArrayList?
- Bagaimana cara Iterasi melalui HashMap di Java 8?
CrunchifySortMapByKeyValueJava8.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
package crunchify . com . tutorial ; import java . util . ArrayList ; import java . util . HashMap ; import java . util . LinkedHashMap ; import java . util . Map ; import java . util . Random ; import java . util . stream . Stream ; /** * @author Crunchify.com * * Best way to sort HashMap by Key and Value in Java8 - Tutorial by App Shah * */ public class CrunchifySortMapByKeyValueJava8 { private static final Random crunchifyRandom = new Random ( ) ; public static void main ( String [ ] argv ) { Map < String , Integer > crunchifyMap = new HashMap < > ( ) ; // Let's first create companies ArrayList ArrayList <String> companies = new ArrayList < > ( ) ; companies . add ( "Crunchify.com" ) ; companies . add ( "Google.com" ) ; companies . add ( "Twitter.com" ) ; // Let's add 10 entries to HashMap crunchifyMap for ( int i = 1 ; i < = 10 ; ++ i ) { // How to get Random value from ArrayList? String company = companies . get ( crunchifyRandom . nextInt ( companies . size ( ) ) ) ; // Basically we are creating // Key with pattern: 1-Crunchify, 5-Google, and so on... // Random Value: Number between 1 to 50 crunchifyMap . put ( crunchifyRandom . nextInt ( 10 ) + "-" + company , crunchifyRandom . nextInt ( 50 ) ) ; } crunchifyLog ( "~~~~~~~~~~~~~~Original HashMap (crunchifyMap value)~~~~~~~~~~~~~~" ) ; crunchifyLog ( crunchifyMap ) ; crunchifyLog ( "\n~~~~~~~~~~~~~~Updated HashMap after Sorting by Key~~~~~~~~~~~~~~" ) ; // Map: An object that maps keys to values. A map cannot contain duplicate keys; each key can map to at most one value. Map < String , Integer > key = crunchifySortByKey ( crunchifyMap ) ; iterateThroughHashMapJava8 ( key ) ; crunchifyLog ( "\n~~~~~~~~~~~~~~Updated HashMap after Sorting by Value~~~~~~~~~~~~~~" ) ; Map < String , Integer > value = crunchifySortByValue ( crunchifyMap ) ; iterateThroughHashMapJava8 ( value ) ; } // Simple Log Statement private static void crunchifyLog ( Object string ) { System . out . println ( string ) ; } // How to Iterate through HashMap in Java 8? private static void iterateThroughHashMapJava8 ( Map < String , Integer > crunchifyMap ) { crunchifyMap . forEach ( ( k , v ) - > { System . out . println ( "Key: " + k + "\t\t\t Value: " + v ) ; } ) ; } // Let's sort HashMap by Key // Comparable: This interface imposes a total ordering on the objects of each class that implements it. // This ordering is referred to as the class's natural ordering, and the class's compareTo method is referred to as its natural comparison method. public static < K extends Comparable < ? super K > , V > Map < K , V > crunchifySortByKey ( Map < K , V > crunchifyMap ) { Map < K , V > crunchifyResult = new LinkedHashMap < > ( ) ; Stream < Map . Entry < K , V > > sequentialStream = crunchifyMap . entrySet ( ) . stream ( ) ; // comparingByKey() returns a comparator that compares Map.Entry in natural order on key. sequentialStream . sorted ( Map . Entry . comparingByKey ( ) ) . forEachOrdered ( c - > crunchifyResult . put ( c . getKey ( ) , c . getValue ( ) ) ) ; return crunchifyResult ; } // Let's sort HashMap by Value public static < K , V extends Comparable < ? super V > > Map < K , V > crunchifySortByValue ( Map < K , V > crunchifyMap ) { Map < K , V > crunchifyResult = new LinkedHashMap < > ( ) ; // Stream: A sequence of elements supporting sequential and parallel aggregate operations. // The following example illustrates an aggregate operation using Stream and IntStream. Stream < Map . Entry < K , V > > sequentialStream = crunchifyMap . entrySet ( ) . stream ( ) ; // comparingByValue() returns a comparator that compares Map.Entry in natural order on value. // sorted(): Returns a stream consisting of the elements of this stream, sorted according to the provided Comparator. sequentialStream . sorted ( Map . Entry . comparingByValue ( ) ) . forEachOrdered ( c - > crunchifyResult . put ( c . getKey ( ) , c . getValue ( ) ) ) ; // getValue(): Returns the value corresponding to this entry. If the mapping has been removed from the backing map (by the iterator's remove operation), the results of this call are undefined. // getKey(): Returns the key corresponding to this entry. return crunchifyResult ; } } |
Keluaran Konsol Eclipse:
Jalankan saja program di atas sebagai Aplikasi Java dan Anda akan melihat hasil seperti di bawah ini.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Original HashMap ( crunchifyMap value ) ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ { 9 - Google . com = 36 , 6 - Twitter . com = 17 , 3 - Google . com = 39 , 2 - Twitter . com = 43 , 5 - Crunchify . com = 2 , 8 - Google . com = 5 , 8 - Crunchify . com = 47 , 5 - Google . com = 10 , 7 - Google . com = 3 } ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Updated HashMap after Sorting by Key ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Key : 2 - Twitter . com Value : 43 Key : 3 - Google . com Value : 39 Key : 5 - Crunchify . com Value : 2 Key : 5 - Google . com Value : 10 Key : 6 - Twitter . com Value : 17 Key : 7 - Google . com Value : 3 Key : 8 - Crunchify . com Value : 47 Key : 8 - Google . com Value : 5 Key : 9 - Google . com Value : 36 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Updated HashMap after Sorting by Value ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Key : 5 - Crunchify . com Value : 2 Key : 7 - Google . com Value : 3 Key : 8 - Google . com Value : 5 Key : 5 - Google . com Value : 10 Key : 6 - Twitter . com Value : 17 Key : 9 - Google . com Value : 36 Key : 3 - Google . com Value : 39 Key : 2 - Twitter . com Value : 43 Key : 8 - Crunchify . com Value : 47 |
Beri tahu kami jika Anda menghadapi masalah saat menjalankan program di atas.