B.1 Mengurutkan Objek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

dokumen-dokumen yang mirip
B.1 Mengurutkan Obyek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

B.1 Mengurutkan Objek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

MEMBUAT OBJECT COMPARABLE DAN COMPARATOR

Membuat Object Comparable

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

MODUL III ARRAYLIST TUGAS PENDAHULUAN

Permainan Remi Sederhana

C. TUGAS PENDAHULUAN Buatlah resume 1 halaman mengenai Priority Queue dan berikan penjelasannya.!

Politeknik Elektronika Negeri Surabaya

Gambar 1. Single Linked List

Praktikum KPLBO Final Object Concept I

Agar lebih mudah mengerti, cobalah untuk melakukan hal-hal berikut ini: 1. Bacalah terlebih dahulu ide dasar dari masing-masing algoritma.

A. TUJUAN PEMBELAJARAN

Gambar 1. Single Linked List

Pertemuan 4 Halaman 1/1. Class Inheritance

B. DASAR TEORI Array. Misalkan kita memiliki tiga data yang berbeda dan kita simpan dalam variabel yang berbeda.

Chapter 6 Konsep OOD with Java

1.Tujuan. 2. Latar Belakang. Mendefinisikan superclasses dan subclasses Override method dari superclasses Membuat method final dan class final

A. TUJUAN PEMBELAJARAN 1. Memahami konsep Class LinkedList di Collection 2. Memahami penggunaan method-method pada Class LinkedList.

Gambar 1. Single Linked List

Java Generic & Collection

Bahasa Pemrograman :: Inheritance

Politeknik Elektronika Negeri Surabaya

Gambar 1. Single Linked List

MODUL 3. Inheritance, Abstract Class, Interface TUJUAN PRAKTIKUM LANDASAN TEORI. A. Inheritance

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

Pemrograman Berbasis Objek Operator dan Assignment

Politeknik Elektronika Negeri Surabaya

Bahasa Pemrograman :: Polimorfism and Abstraction

Overriding, Overloading, Polymorphism. Pertemuan 10 Pemrograman Berbasis Obyek Dr. Rodiah

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA GENERIC DAN IMPLEMENTASI COMPARETO()

Operator dan Assignment

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

BAB 12 ENKAPSULASI, INHERITANCE DAN POLIMORPISME

Konsep Lanjut Pemrograman Objek

Polymorphism (Polimorfisme)

Belajar ArrayList di Java

Praktikum 3 Konsep Class, Attribute dan Method

A. TUJUAN PEMBELAJARAN 1. Memahami mengenai konsep Enum 2. Memahami bentuk-bentuk penggunaan Enum 3. Memahami fungsi-fungsi yang terdapat di Enum

IMPLEMENTASI STRUKTUR DATA LIST, QUEUE DAN STACK DALAM JAVA

LAPORAN RESMI PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK (PBO) MODUL 5 INTERFACE

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

ABSTRACT & INTERFACE. Pemrograman Lanjut Herman Tolle

Grouping Object. Viska Mutiawani, M.Sc

Pemrograman Berorientasi. Inheritance

INSTITUT TEKNOLOGI SUMATERA COLLECTION: SET DAN MAP

Overriding Overloading Polymorphism

Array Sebagai Parameter Method

KONSEP OOP: POLYMORPHISM

Chapter 10 Polimorphism

LAMPIRAN 1. Listing Program

Bab 8. Dasar-Dasar OOP

Politeknik Elektronika Negeri Surabaya

Arrays. Misalkan kita ingin menyimpan 100 buah integer Buat 100 variabel bertipe integer. Tidak efisien!

Politeknik Elektronika Negeri Surabaya

MODUL PRAKTIKUM BASIS DATA PENGENALAN STRUKTUR DATA DAN KOMPLEKSITAS WAKTU

Java Operators. Nurochman

Praktikum KPLBO Class dan Object I

LAPORAN RESMI PRAKTIKUM BAHASA PEMROGRAMAN

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

Pemrograman Berbasis Obyek. Yuliana Setiowati. Elektronika Negeri Surabaya PJJ PENS-ITS

Praktikum 6 Class Design (Encapsulation)

Inheritance (Pewarisan) Pengertian dasar inheritance

Array. Topik. Mendeklarasikan Array Creating Array Initializing Array Array Multidimensional Array Bounds Array Resizing Copying Arrays

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

B. DASAR TEORI MENGENAL OBJEK & CLASS

GENERICS. Yuliana Setiowati. Politeknik Elektronika Negeri Surabaya. Topik

Outline STRUKTUR DATA. VII. Sorting

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

Polymorphism. Oleh : Agus Priyanto, M.Kom

Modul Praktikum 4 Pemograman Berorientasi Objek

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

B. DASAR TEORI MENGENAL OBJEK & CLASS

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

Percabangan & Perulangan

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA

1.Tujuan. 2. Latar Belakang

A. TUJUAN PEMBELAJARAN. 1. Menerapkan konsep enkapsulasi pada class 2. Mendeklarasikan suatu constructor

Membuat dan Menggunakan Class

KONSEP OOP: POLYMORPHISM

MEMBUAT KELAS SENDIRI. Dewi Sartika, M.Kom

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman Berorientasi Obyek. Operator & Assignment

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

BAHASA PEMROGRAMAN JAVA

BAB II VARIABEL DAN TIPE DATA

IKG2I4 / Software Project I

2 TIPE DATA DAN VARIABEL

Percabangan & Perulangan

IF PEMROGRAMAN LANJUT GENERIC. Oleh : Andri Heryandi, M.T.

Transkripsi:

PRAKTIKUM 22 COMPARATOR A. TUJUAN PEMBELAJARAN 1. Memahami untuk mengurutkan data dengan cara membandingkan satu objek dengan objek lainnya. 2. Mengetahui cara mengurutkan data dengan class yang didefinisikan sendiri, dengan cara mengimplementasikan Comparator. B. DASAR TEORI Pada kehidupan nyata, object-object sering dibandingkan, misal : Mobil Andi lebih mahal dibandingkan dengan mobil Budi Buku A lebih tebal dibandingkan dengan Buku B Usia Andi lebih muda dibandingkan dengan usia Intan Dalam pemrograman object oriented, sering sekali ada kebutuhan untuk membandingkan object-object dari class yang sama, misalkan membandingkan object untuk mengurutkan data, pencarian data yang diurutkan berdasarkan umur. Pada praktikum ini akan membahas bagaimana merancang object dari class untuk bisa dibandingkan menggunakan interface java.lang.comparable and java.util.comparator. B.1 Mengurutkan Objek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort(). import java.util.arrays; public class ArrayString { public static void main(string args[]){ String animals[] = new String[6]; animals[0] = "snake"; animals[1] = "kangaroo"; animals[2] = "wombat"; 197

animals[3] = "bird"; System.out.println("\nSEBELUM DISORTING"); for (int i = 0; i < 4; i++) { System.out.println("animal " + i + " : " + animals[i]); Arrays.sort(animals,0,4); System.out.println("\nSETELAH DISORTING"); for (int i = 0; i < 4; i++) { System.out.println("animal " + i + " : " + animals[i]); Output : SEBELUM DISORTING animal 0 : snake animal 1 : kangaroo animal 2 : wombat animal 3 : bird SETELAH DISORTING animal 0 : bird animal 1 : kangaroo animal 2 : snake animal 3 : wombat Terdapat data String yang tersimpan dalam ArrayList, untuk mengurutkan data menggunakan Collections.sort() import java.util.arraylist; import java.util.collections; public class SortList { public static void main(string args[]){ ArrayList insects = new ArrayList(); insects.add("mosquito"); insects.add("butterfly"); insects.add("dragonfly"); insects.add("fly"); System.out.println("\nSEBELUM DISORTING"); int size = insects.size(); for (int i = 0; i < size; i++) { System.out.println("insect " + i + " : " + (String) insects.get(i)); Collections.sort(insects); System.out.println("\nSETELAH DISORTING"); 198

for (int i = 0; i < size; i++) { System.out.println("insect " + i + " : " + (String) insects.get(i)); Output : SEBELUM DISORTING insect 0 : mosquito insect 1 : butterfly insect 2 : dragonfly insect 3 : fly SETELAH DISORTING insect 0 : butterfly insect 1 : dragonfly insect 2 : fly insect 3 : mosquito B.2 Mengurutkan Objek Yang Kita Definisikan Sendiri Kita buat class Mahasiswa yang terdapat informasi nama dan nrp dengan tipe String. Terdapat beberapa data mahasiswa yang disimpan di array, selanjutnya kita urutkan berdasarkan nrp. public class Mahasiswa { private String nrp ; private String nama ; public Mahasiswa(String nrp, String nama) { this.nrp = nrp; this.nama = nama; 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; @Override 199

public String tostring() { return "Mahasiswa{" + "nrp=" + nrp + " nama=" + nama + ''; Buatlah class TestMahasiswa untuk menampilkan output : import java.util.arrays; public class TestMahasiswa { public static void main(string[] args) { Mahasiswa datamhs[] = {new Mahasiswa("05", "Cahya"),new Mahasiswa("04", "Rudi"), new Mahasiswa("01", "Endah"),new Mahasiswa("03", "Rita"),new Mahasiswa("02", "Tika"); System.out.println("SEBELUM SORTING"); Arrays.sort(dataMhs); System.out.println("\nSESUDAH SORTING"); Output : Exception in thread "main" java.lang.classcastexception: prak.mahasiswa cannot be cast to java.lang.comparable at java.util.arrays.mergesort(arrays.java:1144) at java.util.arrays.sort(arrays.java:1079) at prak.testmahasiswa.main(testmahasiswa.java:16) Java Result: 1 Pada output program terjadi exception. Mengapa? Karena untuk mengurutkan objek (proses mengurutkan ini dilakukan dengan cara membandingkan satu objek dengan objek yang lain), maka objek tersebut harus mengimplementasikan interface Comparable. Dengan mengimplementasikan interface Comparable pada sebuah class, menyebabkan object-object tersebut bisa dibandingkan (comparable). Kalau pada percobaan sebelumnya data yang diurutkan adalah String, dapat diurutkan karena String mengimplementasikan interface Comparable. public final class String extends Object implements Serializable, Comparable<String>, CharSequence Interface ini mempunyai sebuah method compareto() yang menentukan bagaimana cara membandingkan antara dua object dari class tersebut. 200

Bentuk methodnya: public int compareto(object o) Mehod compareto() menerima Object, sehingga kita bisa memasukkan sembarang object, tapi harus mempunyai tipe yang sama. Kalau object yang kita masukkan adalah object yang berbeda maka melemparkan exception java.lang.classcastexception. Return value dari method compareto() 0 jika dua object yang dibandingkan sama. Bilangan positif, jika object 1 lebih besar dibandingkan dengan object 2 Bilangan negatif, jika object 1 lebih kecil dibandingkan dengan object 2 Bagaimana caranya supaya bisa menggunakan Array.sort() pada contoh kasus diatas. Pada class Mahasiswa implementasikan interface Comparable, berarti harus mengimplementasikan method compareto(). Isilah method ini dengan tujuan untuk membandingkan object dari class Mahasiswa berdasarkan umur. Jangan lupa untuk mengcasting object menjadi object dari class Mahasiswa terlebih dahulu. public class Mahasiswa implements Comparable { private String nrp ; private String nama ; public Mahasiswa(String nrp, String nama) { this.nrp = nrp; this.nama = nama; 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; @Override public String tostring() { return "Mahasiswa{" + "nrp=" + nrp + " nama=" + nama + ''; 201

public int compareto(object o) { Mahasiswa m2 = (Mahasiswa) o ; return this.nrp.compareto(m2.nrp); Selanjutnya jalankan class TestMahasiswa lagi. Output : SEBELUM SORTING [Mahasiswa{nrp=05 nama=cahya, Mahasiswa{nrp=04 nama=rudi, Mahasiswa{nrp=01 nama=endah, Mahasiswa{nrp=03 nama=rita, Mahasiswa{nrp=02 nama=tika] SESUDAH SORTING [Mahasiswa{nrp=01 nama=endah, Mahasiswa{nrp=02 nama=tika, Mahasiswa{nrp=03 nama=rita, Mahasiswa{nrp=04 nama=rudi, Mahasiswa{nrp=05 nama=cahya] B.3 Penggunaan Class Comparator Dengan mengimplementasikan interface Comparable kita hanya bisa menentukan satu cara saja untuk membandingkan object-object dari class Mahasiswa, untuk contoh sebelumnya, yang kita bandingkan berdasarkan nrp. Bagaimana jika object-object dari class Mahasiswa diurutkan berdasarkan nama? Berarti object-object tersebut dibandingkan berdasarkan nama. Kita masih memerlukan satu cara lagi untuk membandingkan object-object dari class Mahasiswa. Kita memerlukan comparator. Untuk membuat comparator, buat class yang mengimplementasikan interface java.util.comparator, dan method compare(). public int compare(object o1, Object o2) Return value dari method compare() 0 jika dua object yang dibandingkan sama. Bilangan positif, jika object 1 lebih besar dibandingkan dengan object 2 Bilangan negatif, jika object 1 lebih kecil dibandingkan dengan object 2 Class Comparator public class NamaComparator implements Comparator { public int compare(object o1, Object o2) { Mahasiswa m1 = (Mahasiswa) o1; 202

Mahasiswa m2 = (Mahasiswa) o2; return m1.getnama().compareto(m2.getnama()); Penggunaan objek Comparator pada Arrays.sort() public class TestMahasiswa2 { public static void main(string[] args) { Mahasiswa datamhs[] = {new Mahasiswa("05", "Cahya"),new Mahasiswa("04", "Rudi"), new Mahasiswa("01", "Endah"),new Mahasiswa("03", "Rita"),new Mahasiswa("02", "Tika"); System.out.println("SEBELUM SORTING"); Arrays.sort(dataMhs, new NamaComparator()); System.out.println("\nSESUDAH SORTING"); Output : Mengurutkan Data Mahasiswa berdasarkan Nama SEBELUM SORTING [Mahasiswa{nrp=05 nama=cahya, Mahasiswa{nrp=04 nama=rudi, Mahasiswa{nrp=01 nama=endah, Mahasiswa{nrp=03 nama=rita, Mahasiswa{nrp=02 nama=tika] SESUDAH SORTING [Mahasiswa{nrp=05 nama=cahya, Mahasiswa{nrp=01 nama=endah, Mahasiswa{nrp=03 nama=rita, Mahasiswa{nrp=04 nama=rudi, Mahasiswa{nrp=02 nama=tika] C. TUGAS PENDAHULUAN Buatlah resume 1 halaman mengenai kegunaan interface Comparator, dan 1 contoh penggunaan dari interface Comparator. D. PERCOBAAN Percobaan 1 : Mengurutkan data secara descending, data tersimpan di ArrayList import java.util.arraylist; import java.util.collections; import java.util.comparator; public class SortArrayListInDescendingOrderExample { public static void main(string[] args) { 203

//create an ArrayList object ArrayList arraylist = new ArrayList(); //Add elements to Arraylist arraylist.add("a"); arraylist.add("b"); arraylist.add("c"); arraylist.add("d"); arraylist.add("e"); Comparator comparator = Collections.reverseOrder(); System.out.println("Before sorting ArrayList in descending order : " + arraylist); Collections.sort(arrayList,comparator); System.out.println("After sorting ArrayList in descending order : " + arraylist); Percobaan 2 : Membuat sendiri class yang akan diurutkan dan membuat objek Comparator. import java.util.*; class Employee{ private int age; private String name; public void setage(int age){ this.age=age; public int getage(){ return this.age; public void setname(string name){ this.name=name; public String getname(){ return this.name; class AgeComparator implements Comparator{ public int compare(object emp1, Object emp2){ 204

int emp1age = ((Employee)emp1).getAge(); int emp2age = ((Employee)emp2).getAge(); if(emp1age > emp2age) return 1; else if(emp1age < emp2age) return -1; else return 0; class NameComparator implements Comparator{ public int compare(object emp1, Object emp2){ //parameter are of type Object, so we have to downcast it to Employee objects String emp1name = ((Employee)emp1).getName(); String emp2name = ((Employee)emp2).getName(); //uses compareto method of String class to compare names of the employee return emp1name.compareto(emp2name); public class JavaComparatorExample{ public static void main(string args[]){ //Employee array which will hold employees Employee employee[] = new Employee[2]; //set different attributes of the individual employee. employee[0] = new Employee(); employee[0].setage(40); employee[0].setname("joe"); employee[1] = new Employee(); employee[1].setage(20); employee[1].setname("mark"); System.out.println("Order of employee before sorting is"); //print array as is. for(int i=0; i < employee.length; i++){ System.out.println( "Employee " + (i+1) + " name :: " + employee[i].getname() + ", Age :: " + employee[i].getage()); //Sorting array on the basis of employee age by passing AgeComparator Arrays.sort(employee, new AgeComparator()); 205

System.out.println("\n\nOrder of employee after sorting by employee age is"); for(int i=0; i < employee.length; i++){ System.out.println( "Employee " + (i+1) + " name :: " + employee[i].getname() + ", Age :: " + employee[i].getage()); //Sorting array on the basis of employee Name by passing NameComparator Arrays.sort(employee, new NameComparator()); System.out.println("\n\nOrder of employee after sorting by employee name is"); for(int i=0; i < employee.length; i++){ System.out.println( "Employee " + (i+1) + " name :: " + employee[i].getname() + ", Age :: " + employee[i].getage()); Percobaan 3 : Membuat class Mahasiswa dengan variabel nama dan nrp dengan tipe String. Membuat data mahasiswa yang tersimpan di array. Selanjutnya lakukan pengurutan data mahasiswa tersebut, apa yang terjadi? Jelaskan! public class Mahasiswa { private String nrp ; private String nama ; public Mahasiswa(String nrp, String nama) { this.nrp = nrp; this.nama = nama; 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; @Override 206

public String tostring() { return "Mahasiswa{" + "nrp=" + nrp + " nama=" + nama + ''; import java.util.arrays; public class TestMahasiswa { public static void main(string[] args) { Mahasiswa datamhs[] = {new Mahasiswa("05", "Cahya"),new Mahasiswa("04", "Rudi"), new Mahasiswa("01", "Endah"),new Mahasiswa("03", "Rita"),new Mahasiswa("02", "Tika"); System.out.println("SEBELUM SORTING"); Arrays.sort(dataMhs); System.out.println("\nSESUDAH SORTING"); Percobaan 4 : Mengurutkan data mahasiswa berdasarkan nama, dengan mengimplementasikan interface Comparator. Class Comparator public class NamaComparator implements Comparator { public int compare(object o1, Object o2) { Mahasiswa m1 = (Mahasiswa) o1; Mahasiswa m2 = (Mahasiswa) o2; return m1.getnama().compareto(m2.getnama()); Penggunaan objek Comparator pada Arrays.sort() public class TestMahasiswa2 { public static void main(string[] args) { Mahasiswa datamhs[] = {new Mahasiswa("05", "Cahya"),new Mahasiswa("04", "Rudi"), new Mahasiswa("01", "Endah"),new Mahasiswa("03", "Rita"),new Mahasiswa("02", "Tika"); System.out.println("SEBELUM SORTING"); Arrays.sort(dataMhs, new NamaComparator()); System.out.println("\nSESUDAH SORTING"); 207

Percobaan 5 : Membuat sendiri class yang akan diurutkan dan membuat objek Comparator. Mengurutkan objek secara descending. import java.util.arraylist; import java.util.arrays; import java.util.collections; import java.util.comparator; import java.util.list; public class EmpComparator implements Comparator { public int compare(object obj1, Object obj2) { Person emp1 = (Person) obj1; Person emp2 = (Person) obj2; int namecomp = emp1.getfirstname().compareto(emp2.getfirstname()); return ((namecomp == 0)? emp1.getlastname().compareto( emp2.getlastname()) : namecomp); public static void main(string args[]) { String names[] = { "Bart", "Hugo", "Lisa", "Marge", "Homer", "Maggie", "Roy" ; // Convert to list List list = new ArrayList(Arrays.asList(names)); // Ensure list sorted Collections.sort(list); System.out.println("Sorted list: [length: " + list.size() + "]"); System.out.println(list); // Search for element in list int index = Collections.binarySearch(list, "Maggie"); System.out.println("Found Maggie @ " + index); // Search for element not in list index = Collections.binarySearch(list, "Jimbo Jones"); System.out.println("Didn't find Jimbo Jones @ " + index); // Insert int newindex = -index - 1; list.add(newindex, "Jimbo Jones"); System.out.println("With Jimbo Jones added: [length: " + list.size() + "]"); System.out.println(list); // Min should be Bart System.out.println(Collections.min(list)); // Max should be Roy System.out.println(Collections.max(list)); 208

Comparator comp = Collections.reverseOrder(); // Reversed Min should be Roy System.out.println(Collections.min(list, comp)); // Reversed Max should be Bart System.out.println(Collections.max(list, comp)); class Person implements Comparable { String firstname, lastname; public Person(String f, String l) { this.firstname = f; this.lastname = l; public String getfirstname() { return firstname; public String getlastname() { return lastname; public String tostring() { return "[ name=" + firstname + ",name=" + lastname + "]"; public int compareto(object obj) { Person emp = (Person) obj; int deptcomp = firstname.compareto(emp.getfirstname()); return ((deptcomp == 0)? lastname.compareto(emp.getlastname()) : deptcomp); public boolean equals(object obj) { if (!(obj instanceof Person)) { return false; Person emp = (Person) obj; return firstname.equals(emp.getfirstname()) && lastname.equals(emp.getlastname()); E. LATIHAN 209

Latihan 1 : Kembangkan untuk Class Mahasiswa dengan memberikan variabel baru berupa nilai IPK (double), selanjutkan lakukan pengurutan data Mahasiswa berdasarkan nrp, nama dan nilai IPK (menggunakan Comparator). Latihan 2 : 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 Comparator) F. TUGAS Tugas 1 : Ubahlah contoh FindDups di bawah ini menggunakan SortedSet untuk menggantikan Set. Definisikan Comparator, sehingga pada saat melakukan sorting berlaku non- case sensitive. import java.util.*; public class FindDups { public static void main(string[] args) { Set<String> s = new HashSet<String>(); for (String a : args) if (!s.add(a)) System.out.println("Duplicate detected: " + a); System.out.println(s.size() + " distinct words: " + s); G. LAPORAN RESMI Kerjakan hasil percobaan(d), latihan(e) dan tugas(f) di atas dan tambahkan analisa. 210