Java SortedSet
SortedSet
adalah turunan dari interface Set
, namun pada SortedSet
elemen-elemen yang dimasukkan ke dalam SortedSet
akan otomatis diurutkan.
Jika pada element yang dimasukan adalah turunan atau implementasi dari interface Comparable
, maka secara otomatis akan diurutkan menggunakan comparable tersebut.
Jika element bukan turunan atau implementasi dari interface Comparable
, maka kita bisa menggunakan Comparator
untuk kemudian di beri tahu kepada SortedSet
bagaimana cara mengurutkan elemen-elemennya.
Baca Juga:
Method yang dapat digunakan pada SortedSet
:
SortedSet dengan Comparable
Jika pada element yang dimasukan adalah turunan atau implementasi dari interface Comparable
, maka secara otomatis akan diurutkan menggunakan comparable tersebut.
Contoh:
import java.util.SortedSet;
import java.util.TreeSet;
public class DemoSortedSet {
static class Student implements Comparable<Student> {
private String name;
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student (name=" + name + ")";
}
@Override
public int compareTo(Student o) {
return this.getName().compareTo(o.getName());
}
}
public static void main(String[] args) {
SortedSet<Student> students = new TreeSet<>();
students.add(new Student("Nathan"));
students.add(new Student("Lina"));
students.add(new Student("Abid"));
students.add(new Student("Astutik"));
for (var s : students) {
System.out.println(s.toString());
}
}
}
Output:
Student (name=Abid)
Student (name=Astutik)
Student (name=Lina)
Student (name=Nathan)
SortedSet dengan Comparator
Jika element bukan turunan atau implementasi dari interface Comparable
, maka kita bisa menggunakan Comparator
untuk kemudian di beri tahu kepada SortedSet
bagaimana cara mengurutkan elemen-elemennya.
Contoh:
import java.util.Comparator;
import java.util.SortedSet;
import java.util.TreeSet;
public class DemoSortedSet {
static class Student {
private String name;
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student (name=" + name + ")";
}
}
static class StudentComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return o1.getName().compareTo(o2.getName());
}
}
public static void main(String[] args) {
SortedSet<Student> students = new TreeSet<>(new StudentComparator());
students.add(new Student("Recky"));
students.add(new Student("Anisa"));
students.add(new Student("Restu"));
students.add(new Student("Ade"));
for (var s : students) {
System.out.println(s.toString());
}
}
}
Output:
Student (name=Ade)
Student (name=Anisa)
Student (name=Recky)
Student (name=Restu)
Immutable SortedSet
SortedSet
dapat dibuat menjadi immutable menggunakan metod static:
Nama Method | Keterangan |
---|---|
Collections.emptySortedSet() | Membuat immutable sorted set kosong |
Collections.unmodifiableSortedSet() | Mengubah mutable sorted set menjadi immutable |
Contoh:
SortedSet<Student> immutableStudent = Collections.unmodifiableSortedSet(students);
immutableStudent.add(new Student("Dika")); // Error
students = Collections.emptySortedSet();