Hallo,
das Interface java.util.Comparator hat zwei abstrakte Methoden
.
Das Beispiel aus dem Buch "Java ist auch eine Insel" implementiert den Comparator und implementier lediglich die Methode compare().
Wieso müssen nicht beide abstrakten Methoden implementiert werden ?
das Interface java.util.Comparator hat zwei abstrakte Methoden
Java:
int compare(T o1, T o2);
boolean equals(Object obj);
Das Beispiel aus dem Buch "Java ist auch eine Insel" implementiert den Comparator und implementier lediglich die Methode compare().
Wieso müssen nicht beide abstrakten Methoden implementiert werden ?
Java:
// Room.java
package com.tutego.insel.util;
public class Room {
private int sqm;
public Room(int sqm) {
this.sqm = sqm;
}
public int getSqm() {
return this.sqm;
}
}
package com.tutego.insel.util;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class RoomComparator implements Comparator<Room> {
@Override
public int compare(Room room1, Room room2) {
return Integer.compare(room1.getSqm(), room2.getSqm());
}
}
-----------------------------------------------------------
//RoomComparatorDemo.java
package com.tutego.insel.util;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class RoomComparator implements Comparator<Room> {
@Override
public int compare(Room room1, Room room2) {
return Integer.compare(room1.getSqm(), room2.getSqm());
}
}
public class RoomComparatorDemo {
public static void main(String[] args) {
List<Room> list = Arrays.asList(new Room(1123), new Room(100), new Room(123));
Collections.sort(list, new RoomComparator());
System.out.println(list.get(0).getSqm());
}
}