Skip to main content

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.

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 MethodKeterangan
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();

Baca Juga