Rumah  >  Artikel  >  Java  >  Cara menggunakan fungsi TreeSet untuk mengisih set dalam Java

Cara menggunakan fungsi TreeSet untuk mengisih set dalam Java

WBOY
WBOYasal
2023-06-26 18:11:42963semak imbas

Fungsi TreeSet dalam Java boleh digunakan untuk mengisih set. Tidak seperti set lain, TreeSet menyusun elemen mengikut susunan semula jadinya. Berikut akan memperkenalkan secara terperinci cara menggunakan fungsi TreeSet untuk mengisih koleksi.

  1. Pengenalan kepada TreeSet

TreeSet ialah set tertib yang dilaksanakan berdasarkan pokok merah-hitam. TreeSet mewarisi daripada kelas AbstractSet dan melaksanakan antara muka NavigableSet. TreeSet melaksanakan penyusunan semula jadi unsur atau susunan oleh objek Pembanding yang diluluskan.

Untuk TreeSet, kaedah yang paling penting ialah add(), remove(), contains() dan kaedah lain kaedah ini dilaksanakan dengan memanggil kaedah dalam kelas AbstractSet. Selain itu, TreeSet juga melaksanakan beberapa kaedah set tertib seperti first(), last(), headSet(), tailSet(), subSet(), dll.

  1. Menggunakan TreeSet untuk mengisih set

Yang berikut akan menggunakan contoh untuk memperkenalkan cara menggunakan TreeSet untuk mengisih set. Kami akan menggunakan kelas Pelajar dan mencipta koleksi berbilang objek Pelajar untuk diisih.

Pertama, kita perlu mentakrifkan kelas Pelajar:

public class Student implements Comparable<Student> {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public int compareTo(Student student) {
        return this.age - student.age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + ''' +
                ", age=" + age +
                '}';
    }
}

Dalam kod di atas, kita mentakrifkan kelas Pelajar dan melaksanakan antara muka Sebanding. Kami mentakrifkan kaedah penyusunan semula jadi unsur dengan melaksanakan kaedah compareTo().

Apabila membandingkan dua objek Pelajar, kami membandingkan umur mereka kerana kami ingin menyusun pelajar mengikut umur.

Seterusnya, kami mencipta koleksi yang mengandungi berbilang objek Pelajar:

Set<Student> students = new TreeSet<>();
students.add(new Student("张三", 20));
students.add(new Student("李四", 19));
students.add(new Student("王五", 22));
students.add(new Student("赵六", 21));

Kami dapat melihat bahawa kami menambah empat objek Pelajar pada koleksi. Daripada menggunakan kaedah Collections.sort() untuk mengisih koleksi, kami menggunakan fungsi TreeSet, yang secara automatik mengisih unsur mengikut susunan semula jadinya.

Akhir sekali, kita boleh menggunakan gelung untuk setiap untuk melintasi koleksi dan mengeluarkan maklumat pelajar:

for (Student student : students) {
    System.out.println(student);
}

Hasil keluaran akhir akan diisih mengikut umur pelajar dari kecil ke besar:

Student{name='李四', age=19}
Student{name='张三', age=20}
Student{name='赵六', age=21}
Student{name='王五', age=22}
  1. Isih tersuai kaedah

Jika kita tidak mahu mengisih mengikut susunan semula jadi unsur, kita boleh menggunakan objek Pembanding untuk menyesuaikan kaedah pengisihan. Kod berikut menunjukkan cara menggunakan objek Comparator untuk menyesuaikan kaedah pengisihan:

Set<Student> students = new TreeSet<>(Comparator.comparing(Student::getName));
students.add(new Student("张三", 20));
students.add(new Student("李四", 19));
students.add(new Student("王五", 22));
students.add(new Student("赵六", 21));

Dalam kod di atas, kami menghantar objek Comparator apabila mencipta objek TreeSet. Kami mentakrifkan kaedah pengisihan dengan memanggil kaedah Comparator.comparing() dan menggunakan kaedah getName() dalam kelas Pelajar. Ini bermakna kita akan mengisih mengikut nama pelajar.

Akhir sekali, kami masih menggunakan gelung untuk setiap untuk melintasi set dan mengeluarkan maklumat pelajar:

for (Student student : students) {
    System.out.println(student);
}

Keputusan output akhir akan diisih mengikut nama pelajar dari kecil ke besar:

Student{name='李四', age=19}
Student{name='张三', age=20}
Student{name='赵六', age=21}
Student{name='王五', age=22}
  1. Ringkasan

Gunakan fungsi TreeSet Menyusun koleksi adalah lebih mudah daripada kaedah lain. Ia akan mengisih secara automatik mengikut susunan semula jadi unsur, atau anda boleh menyesuaikan kaedah pengisihan dengan menghantar objek Comparator. Dengan menguasai penggunaan TreeSet, kami boleh menyusun koleksi di Java dengan lebih mudah.

Atas ialah kandungan terperinci Cara menggunakan fungsi TreeSet untuk mengisih set dalam Java. 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