Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden

GetIT

Mitglied
Hallo,

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());
	}
}
 
Jede Klasse leitet automatisch von der Klasse Object ab. Die Klasse Object besitzt schon eine Methode "equals(Object other)" und vererbet diese allen Kindern. Daher ist eine explizite Implementierung nicht mehr notwendig.
 

Zurück
Oben