Rumah  >  Artikel  >  Java  >  Mengisih LinkedHashMap mengikut nilai menggunakan antara muka Setanding dalam Java

Mengisih LinkedHashMap mengikut nilai menggunakan antara muka Setanding dalam Java

WBOY
WBOYke hadapan
2023-08-26 09:53:061604semak imbas

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.

Program untuk mengisih LinkedHashMap mengikut nilai

Sebelum melompat terus ke proses pengisihan, mari lihat beberapa konsep -

LinkedHashMap

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 -

Tatabahasa

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.

Antara muka yang serupa

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".

Tatabahasa

class nameOfclass implements Comparable<nameOfclass>

compareTo() kaedah

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.

Tatabahasa

compareTo(nameOfclass nameOfobject); 

Kaedah Collections.sort()

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".

Tatabahasa

Collections.sort(nameOfcollection);

Algoritma

  • 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.

Contoh

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);
   }
}

Output

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]

Kesimpulan

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam