Comparable ja Comparator
Oppikaa Comparable- ja Comparator-rajapintojen erot mukautettua lajittelua varten. Harjoitelkaa compareTo-metodia ja ulkoisia Comparatoreita.
Comparable ja Comparator on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 3 oppituntia.
Johdanto
Lajittelu tarvitsee säännöt. Comparable ja Comparator ovat kaksi tapaa määritellä ne:
- Comparable: luokka toteuttaa compareTo-metodin.
- Comparator: erillinen olio, joka välitetään sort()-metodille.
Comparablen käsite
Comparable antaa luokan määritellä luonnollisen järjestyksensä. Toteuttakaa compareTo, jotta Collections.sort tietää, miten alkiot järjestetään.
Koodi: Comparable
Tässä Person toteuttaa Comparable-interfacen ja lajittelee henkilöt iän mukaan. Tämä määrittää sen luonnollisen järjestyksen.
public class Main {
static class Person implements Comparable<Person> {
String name;
int age;
Person(String n, int a) { name = n; age = a; }
public int compareTo(Person o) {
return this.age - o.age; // order by age
}
public String toString() { return name + "(" + age + ")"; }
}
public static void main(String[] args) {
java.util.List<Person> list = new java.util.ArrayList<>();
list.add(new Person("Ada",30));
list.add(new Person("Bob",25));
java.util.Collections.sort(list);
System.out.println(list); // [Bob(25), Ada(30)]
}
}
Comparatorin käsite
Comparator on ulkoinen. Sen avulla saman luokan voi lajitella eri tavoin, esimerkiksi nimen eikä iän mukaan.
Koodi: Comparator
Tämä Comparator lajittelee nimen perusteella. Samaa luokkaa varten voi käyttää uudelleen eri Comparator-olioita.
public class Main {
static class Person {
String name; int age;
Person(String n,int a){ name=n; age=a; }
public String toString(){ return name+"("+age+")"; }
}
public static void main(String[] args) {
java.util.List<Person> list = new java.util.ArrayList<>();
list.add(new Person("Ada",30));
list.add(new Person("Bob",25));
java.util.Comparator<Person> byName = (p1,p2) -> p1.name.compareTo(p2.name);
java.util.Collections.sort(list, byName);
System.out.println(list); // [Ada(30), Bob(25)]
}
}
Koodi: käänteinen Comparator
Comparatorit voivat määrittää minkä tahansa säännön, kuten tässä laskevan järjestyksen.
public class Main {
public static void main(String[] args) {
java.util.List<Integer> nums = new java.util.ArrayList<>();
nums.add(5); nums.add(1); nums.add(3);
java.util.Comparator<Integer> desc = (a,b) -> b - a;
java.util.Collections.sort(nums, desc);
System.out.println(nums); // [5,3,1]
}
}
Comparablen ja Comparatorin tarkistus
Pikatarkistus: Mikä on Comparablen ja Comparatorin tärkein ero?
Kertaus
Kertaus: Comparable määrittää luonnollisen järjestyksen luokan sisällä. Comparator on erillinen, ja sen avulla voidaan luoda monia lajittelustrategioita.
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”Comparable ja Comparator” ilmainen?
Kyllä – oppitunnin ”Comparable ja Comparator” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 3 oppituntia.
Mitä opin oppitunnilla ”Comparable ja Comparator”?
Oppikaa Comparable- ja Comparator-rajapintojen erot mukautettua lajittelua varten. Harjoitelkaa compareTo-metodia ja ulkoisia Comparatoreita. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/3.
Kuinka kauan ”Comparable ja Comparator”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Map-kokoelmat ja frekvenssien laskenta
- Comparable ja Comparator
- Lajittelu ja haku Collections-kirjastolla