Rumah >Java >javaTutorial >Mengisih LinkedHashMap mengikut nilai menggunakan antara muka Setanding dalam Java
LinkedHashMap ialah kelas umum yang digunakan untuk melaksanakan antara muka Peta. Tambahan pula, ia adalah subkelas kelas HashMap, jadi ia boleh menggunakan semua kaedah kelas HashMap dan melakukan operasi yang serupa.
Java menyediakan pelbagai kaedah untuk mengisih LinkedHashMap, kami akan belajar cara menciptanya menggunakan antara muka Setanding dan mengisihnya mengikut nilainya melalui artikel ini.
Sebelum melompat terus ke proses pengisihan, mari lihat beberapa konsep -
Seperti yang kita bincangkan sebelum ini, kelas LinkedHashMap memanjangkan kelas HashMap untuk melaksanakan antara muka Peta. Ia mengekalkan pasangan nilai kunci. Kunci ialah objek yang digunakan untuk mendapatkan dan menerima nilai yang dikaitkan dengannya. Ia menyimpan elemen yang dipetakan dalam LinkedList dalam susunan sisipan, iaitu ia mengekalkan susunan sisipan unsur. Tambahan pula, apabila kita mengembalikan elemennya, ia dicetak dalam susunan sisipan.
Sintaks umum LinkedHashMap adalah seperti berikut -
LinkedHashMap< TypeOfKey, TypeOfValue > nameOfMap = new LinkedHashMap<>();
Dalam sintaks di atas,
TypeOfKey − menentukan jenis data kunci.
TypeOfValue − Menentukan jenis data nilai yang akan disimpan dalam peta.
nameOfMap − Berikan peta anda nama yang sesuai.
Java menyediakan pelbagai algoritma pengisihan dan kaedah yang boleh membantu kami mengisih tatasusunan, senarai atau sebarang koleksi. Antara muka setanding ialah kaedah tambahan yang sangat berguna apabila kita ingin mengisih objek tersuai dalam susunan semula jadi. Sebagai contoh, ia menyusun rentetan secara leksikografi dan nombor secara berangka. Antara muka ini tersedia dalam pakej "java.lang".
class nameOfclass implements Comparable<nameOfclass>
Antara muka Sebanding hanya mentakrifkan kaedah yang dipanggil "CompareTo" yang boleh ditindih untuk mengisih koleksi objek. Ia menyediakan keupayaan untuk membandingkan objek kelas dengan dirinya sendiri. Ia mengembalikan 0 apabila objek "ini" sama dengan objek yang diluluskan, nilai positif jika objek "ini" lebih besar, dan nilai negatif sebaliknya.
compareTo(nameOfclass nameOfobject);
Kelas "Collections" antara muka koleksi menyediakan kaedah statik bernama "Collections.sort()" yang boleh mengisih elemen koleksi tertentu (seperti ArrayList atau LinkedList). Ia tersedia dalam pakej "java.util".
Collections.sort(nameOfcollection);
Langkah 1 - Buat 'Cart' kelas yang melaksanakan antara muka Setanding. Di dalam kelas, isytiharkan dua pembolehubah dan tentukan pembina yang mengambil dua parameter 'item' dan 'harga', masing-masing jenis rentetan dan apungan berketepatan ganda.
Langkah 2 - Selanjutnya, kami akan menukar data objek kepada rentetan menggunakan kaedah "toString()". Kemudian, takrifkan kaedah "compareTo" dengan objek kelas "Cart" sebagai parameter untuk membandingkan objek "ini" dengan objek yang baru dibuat.
Langkah 3 - Sekarang, dalam kaedah main(), isytiharkan objek 'Cart' kelas LinkedHashMap bernama 'obj' dan letakkan butiran objek menggunakan kaedah terbina bernama 'put()' yang disimpan di dalamnya. 'item' ialah kunci dan nilai yang sepadan ialah 'harga'.
Langkah 4 - Akhir sekali, tentukan koleksi ArrayList bernama "SrtList" untuk menyimpan elemen diisih LinkedHashMap. Sekarang, hantar "obj" sebagai parameter kepada kaedah "Collections.sort()" untuk melaksanakan operasi pengisihan mengikut nilai.
import java.util.*; import java.lang.*; public class Cart implements Comparable<Cart> { String item; double price; Cart(String item, double price) { // this keyword shows these variables belongs to constructor this.item = item; this.price = price; } // method for converting object into string public String toString() { return "Item: " + item + ", " + "Price: " + price; } public String getName() { // to retrieve item name return this.item; } // overriding method public int compareTo(Cart comp) { if(this.price > comp.price) { return 1; } else { return -1; } } public static void main(String[] args) { // Declaring collection LinkedHashMap LinkedHashMap<String, Cart> obj = new LinkedHashMap<>(); // Adding object to the obj map Cart obj1 = new Cart("Rice", 59); obj.put(obj1.getName(), obj1); Cart obj2 = new Cart("Milk", 60); obj.put(obj2.getName(), obj2); Cart obj3 = new Cart("Bread", 45); obj.put(obj3.getName(), obj3); // printing details obj map in unsorted order System.out.println("Elements of the map: "); for (String unKey : obj.keySet()) { System.out.println(obj.get(unKey)); } List<Cart> SrtList = new ArrayList<>(obj.values()); Collections.sort(SrtList); // Sorting the object // printing details of obj map in sorted order System.out.println("Elements of the newly sorted map: "); System.out.println(SrtList); } }
Elements of the map: Item: Rice, Price: 59.0 Item: Milk, Price: 60.0 Item: Bread, Price: 45.0 Elements of the newly sorted map: [Item: Bread, Price: 45.0, Item: Rice, Price: 59.0, Item: Milk, Price: 60.0]
Dalam versi Java 1.0, antara muka yang serupa telah diperkenalkan buat kali pertama dan disediakan dalam pakej "java.lang". Dalam artikel ini, kami meneroka penggunaan LinkedHashMap dan antara muka Sebanding dalam operasi pengisihan.
Atas ialah kandungan terperinci Mengisih LinkedHashMap mengikut nilai menggunakan antara muka Setanding dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!