Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mengisih Tatasusunan Objek mengikut Nama di Jawa?

Bagaimana untuk Mengisih Tatasusunan Objek mengikut Nama di Jawa?

Barbara Streisand
Barbara Streisandasal
2024-11-25 12:17:12679semak imbas

How to Sort an Array of Objects by Name in Java?

Mengisih Tatasusunan Objek dalam Java

Masalah:

Anda mempunyai pelbagai objek yang tidak mengandungi rentetan tetapi sebaliknya mempunyai rujukan objek. Setiap rujukan objek memberikan maklumat tentang nama, ID, pengarang dan penerbit melalui kaedah toString. Tugasnya ialah mengisih tatasusunan ini mengikut medan nama. Walau bagaimanapun, anda tidak pasti cara mengekstrak nama daripada setiap objek dan menggunakannya sebagai kriteria pengisihan.

Penyelesaian:

Untuk mengekstrak nama daripada setiap objek dan mengisih dengan medan ini, anda boleh menggunakan pendekatan berikut:

List<Book> books = new ArrayList<Book>();

Collections.sort(books, new Comparator<Book>() {
  @Override
  public int compare(Book o1, Book o2) {
    return o1.getName().compareTo(o2.getName());
  }
});

Dalam ini contoh:

  • Senaraikan ialah senarai yang mewakili tatasusunan objek anda.
  • Collections.sort digunakan untuk mengisih senarai.
  • Comparator() {...} baharu mentakrifkan comparator tersuai untuk menentukan tertib pengisihan.
  • o1.getName() mengekstrak medan nama daripada objek pertama menggunakan kaedah getter atau akses terus jika medan adalah awam.
  • o2.getName() mengekstrak medan nama daripada objek kedua.
  • compareUntuk membandingkan nama yang diekstrak, mengembalikan nilai negatif jika nama pertama lebih kecil, nilai positif jika ia lebih besar, dan sifar jika ia sama.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan Objek mengikut Nama di Jawa?. 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