LATIHAN 4
COMPARABLE DAN COMPARATOR
1. Latihan 1 : Sebutkan class-class yang mengimplementasikan interface Comparable.
Jawab: Class - class yang dibuat sendiri maupun class - class yang tersedia di java
collection dapat mengimplementasikan interface Comparable yang terdapat dalam
package java.lang.Comparable..
2. Latihan 2 : Kembangkan untuk Class Mahasiswa dengan memberikan variabel baru
berupa nilai IPK (double), selanjutkan lakukan pengurutan data Mahasiswa
berdasarkan nrp, nama dan nilai IPK (menggunakan Comparable dan Comparator)
Source Code:
Mahasiswa.java
public class Mahasiswa implements Comparable {
private String nrp ;
private String nama ;
private String IPK;
public Mahasiswa(String nrp, String nama, String IPK) {
this.nrp = nrp;
this.nama = nama;
this.IPK = IPK;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getNrp() {
return nrp;
}
public void setNrp(String nrp) {
this.nrp = nrp;
}
public String getIPK() {
return IPK;
}
public void setIPK(String IPK) {
this.IPK = IPK;
}
@Override
public String toString() {
return "NRPt:"+nrp+"ttNamat: "+nama+"ttIPKt: "+IPK+"n";
}
@Override
public int compareTo(Object o) {
throw new UnsupportedOperationException("Not supported yet."); //To change
body of generated methods, choose Tools | Templates.
}
}
IPKComparator.java
import java.util.Comparator;
public class IPKComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Mahasiswa m1 = (Mahasiswa) o1;
Mahasiswa m2 = (Mahasiswa) o2;
return m1.getIPK().compareTo(m2.getIPK());
}
}
Latihan2.java
import java.util.Arrays;
public class Latihan2 {
public static void main(String[] args) {
Mahasiswa dataMhs[] = {new Mahasiswa("05", "Cahya","3.56"),new
Mahasiswa("04", "Rudi","3.8"),
new Mahasiswa("01", "Endah","3.76"),new Mahasiswa("03", "Rita","3.87"),new
Mahasiswa("02", "Tika","3.88")};
System.out.println("SEBELUM SORTING");
System.out.println(Arrays.toString(dataMhs));
Arrays.sort(dataMhs, new IPKComparator());
System.out.println("nSESUDAH SORTING");
System.out.println(Arrays.toString(dataMhs));
}
}
Output:
3. Latihan 3 : Pada Supermarket Buah, terdapat beberapa macam buah dan informasi
stock dari buah tersebut. Terdapat menu penjualan (supermarket ke konsumen) dan
pembelian (supermarket ke pemasok) (menggunakan Comparable dan Comparator)
Source Code:
Buah.java
public class Buah implements Comparable {
private String namabuah ;
private int stock ;
public Buah(String namabuah,int stock) {
this.namabuah = namabuah;
this.stock=stock;
}
public String getNamaBuah() {
return namabuah;
}
public int getStock() {
return stock;
}
@Override
public String toString() {
return "Buaht: "+namabuah+"ttStockt: "+stock+"n";
}
@Override
public int compareTo(Object o) {
throw new UnsupportedOperationException("Not supported yet."); //To change body
of generated methods, choose Tools | Templates.
}
}
StockComparator.java:
import java.util.Comparator;
public class StockComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Buah m1 = (Buah) o1;
Buah m2 = (Buah) o2;
return m1.getStock().compareTo(m2.getStock());
}
}
Latihan3.java:
import java.util.*;
public class Latihan3{
public static void main(String[] args) {
Buah databuah[] = {new Buah("Melon","160"), new Buah("Aprikot","100"), new
Buah("Alpukat","198"),new Buah("Durian","128")};
System.out.println("SEBELUM DI SORT");
System.out.println(Arrays.toString(databuah));
Arrays.sort(databuah, new StockComparator());
System.out.println("nSESUDAH SORTING");
System.out.println(Arrays.toString(databuah));
}
}
Output:
4.
Source Code:
import java.util.*;
public class Latihan4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Masukkan kata: ");
String kata = input.nextLine();
Set<word> s = new TreeSet<>();
for(String y : kata.split(" ")){
if (!s.add(new word(y)))
System.out.println("Duplicate detected: " +y);
}
System.out.println(s.size() + " distinct words: " +s);
}
}
class word implements Comparable{
private String kata;
public word(String kata){
this.kata=kata;
}
public String getKata(){
return this.kata;
}
@Override
public String toString(){
return kata;
}
@Override
public int compareTo(Object o) {
return this.kata.toLowerCase().compareTo(((word) o).getKata().toLowerCase());
}
}
Output:

Laporan Resmi Algoritma dan Struktur Data :

  • 1.
    LATIHAN 4 COMPARABLE DANCOMPARATOR 1. Latihan 1 : Sebutkan class-class yang mengimplementasikan interface Comparable. Jawab: Class - class yang dibuat sendiri maupun class - class yang tersedia di java collection dapat mengimplementasikan interface Comparable yang terdapat dalam package java.lang.Comparable.. 2. Latihan 2 : Kembangkan untuk Class Mahasiswa dengan memberikan variabel baru berupa nilai IPK (double), selanjutkan lakukan pengurutan data Mahasiswa berdasarkan nrp, nama dan nilai IPK (menggunakan Comparable dan Comparator) Source Code: Mahasiswa.java public class Mahasiswa implements Comparable { private String nrp ; private String nama ; private String IPK; public Mahasiswa(String nrp, String nama, String IPK) { this.nrp = nrp; this.nama = nama; this.IPK = IPK; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } public String getNrp() { return nrp; } public void setNrp(String nrp) { this.nrp = nrp; } public String getIPK() { return IPK; } public void setIPK(String IPK) { this.IPK = IPK; } @Override public String toString() { return "NRPt:"+nrp+"ttNamat: "+nama+"ttIPKt: "+IPK+"n"; } @Override public int compareTo(Object o) {
  • 2.
    throw new UnsupportedOperationException("Notsupported yet."); //To change body of generated methods, choose Tools | Templates. } } IPKComparator.java import java.util.Comparator; public class IPKComparator implements Comparator { @Override public int compare(Object o1, Object o2) { Mahasiswa m1 = (Mahasiswa) o1; Mahasiswa m2 = (Mahasiswa) o2; return m1.getIPK().compareTo(m2.getIPK()); } } Latihan2.java import java.util.Arrays; public class Latihan2 { public static void main(String[] args) { Mahasiswa dataMhs[] = {new Mahasiswa("05", "Cahya","3.56"),new Mahasiswa("04", "Rudi","3.8"), new Mahasiswa("01", "Endah","3.76"),new Mahasiswa("03", "Rita","3.87"),new Mahasiswa("02", "Tika","3.88")}; System.out.println("SEBELUM SORTING"); System.out.println(Arrays.toString(dataMhs)); Arrays.sort(dataMhs, new IPKComparator()); System.out.println("nSESUDAH SORTING"); System.out.println(Arrays.toString(dataMhs)); } }
  • 3.
    Output: 3. Latihan 3: Pada Supermarket Buah, terdapat beberapa macam buah dan informasi stock dari buah tersebut. Terdapat menu penjualan (supermarket ke konsumen) dan pembelian (supermarket ke pemasok) (menggunakan Comparable dan Comparator) Source Code: Buah.java public class Buah implements Comparable { private String namabuah ; private int stock ; public Buah(String namabuah,int stock) { this.namabuah = namabuah; this.stock=stock; } public String getNamaBuah() { return namabuah; } public int getStock() { return stock; } @Override public String toString() { return "Buaht: "+namabuah+"ttStockt: "+stock+"n"; }
  • 4.
    @Override public int compareTo(Objecto) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } } StockComparator.java: import java.util.Comparator; public class StockComparator implements Comparator { @Override public int compare(Object o1, Object o2) { Buah m1 = (Buah) o1; Buah m2 = (Buah) o2; return m1.getStock().compareTo(m2.getStock()); } } Latihan3.java: import java.util.*; public class Latihan3{ public static void main(String[] args) { Buah databuah[] = {new Buah("Melon","160"), new Buah("Aprikot","100"), new Buah("Alpukat","198"),new Buah("Durian","128")}; System.out.println("SEBELUM DI SORT"); System.out.println(Arrays.toString(databuah)); Arrays.sort(databuah, new StockComparator()); System.out.println("nSESUDAH SORTING"); System.out.println(Arrays.toString(databuah)); } }
  • 5.
    Output: 4. Source Code: import java.util.*; publicclass Latihan4 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Masukkan kata: "); String kata = input.nextLine(); Set<word> s = new TreeSet<>(); for(String y : kata.split(" ")){ if (!s.add(new word(y))) System.out.println("Duplicate detected: " +y); } System.out.println(s.size() + " distinct words: " +s); } } class word implements Comparable{ private String kata; public word(String kata){ this.kata=kata;
  • 6.
    } public String getKata(){ returnthis.kata; } @Override public String toString(){ return kata; } @Override public int compareTo(Object o) { return this.kata.toLowerCase().compareTo(((word) o).getKata().toLowerCase()); } } Output: