كيفية فرز HashMap حسب المفتاح والقيمة في Java 8 - البرنامج التعليمي الكامل
نشرت: 2020-09-18
في Java 8 - كيفية فرز الخريطة؟
في Crunchify ، قمنا بكتابة ما يقرب من 400 برنامج تعليمي لجافا وهذه إضافة إلى فئة Java8.
أنا أحب مجموعة Java ولدي العديد من البرامج التعليمية حول كيفية التكرار من خلال Map and List و LinkedList و JSONArray وغير ذلك الكثير.
في هذا البرنامج التعليمي ، سننتقل إلى أفضل طريقة لفرز HashMap حسب المفتاح والقيمة في Java8.
هيا بنا نبدأ:
- سننشئ فئة CrunchifySortMapByKeyValueJava8.java
- قم بإنشاء HashMap <String، Integer> crunchifyMap وهذا ما سنستخدمه للفرز حسب المفتاح والقيمة.
-
For KEY
: سنقوم بإضافة شركة عشوائية من القائمة- Patter: رقم عشوائي بين 1 إلى 10 + (-) + 1 شركة من القائمة
- قائمة الشركات: crunchify.com ، google.com ، twitter.com
-
For VALUE
: سنضيف رقمًا عشوائيًا واحدًا بين 1 إلى 50 - سنقوم بطباعة الخريطة الأصلية ، مرتبة حسب الخريطة الرئيسية ومصنفة حسب خريطة القيمة
الخريطة. ترجع
comparingByKey()
ByKey () مقارنة تقارن Map.Entry بالترتيب الطبيعي على المفتاح.الخريطة. تُرجع الدالة ComparingByValue
comparingByValue()
مقارنًا يقارن Map.Entry بالترتيب الطبيعي للقيمة.
هنا كود جافا كامل:
يرجى إلقاء نظرة على السؤالين المذكورين في الكود أدناه بعناية ، فهذه أدوات مساعدة بسيطة فقط إذا كنت ترغب في استخدامها في مشروعك.
- كيف تحصل على قيمة عشوائية من ArrayList؟
- كيفية التكرار من خلال HashMap في 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 ; } } |
إخراج وحدة التحكم Eclipse:
ما عليك سوى تشغيل البرنامج أعلاه كتطبيق 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 |
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 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 |
أخبرنا إذا واجهت أي مشكلة في تشغيل البرنامج أعلاه.