64 lines
1.4 KiB
Markdown
64 lines
1.4 KiB
Markdown
<!--
|
|
title: Comparator/Comparable
|
|
description: Folien für Comparator/Comparable in Programmieren 1
|
|
url: https://git.henriburau.de/tutorien/programmieren-1
|
|
header: Programmieren 1 **Tutorium**
|
|
footer: Henri Burau und Eva Meinen
|
|
-->
|
|
|
|
## Interface Comparable
|
|
|
|
```java
|
|
interface Comparable<T> {
|
|
int compareTo(T other);
|
|
}
|
|
```
|
|
|
|
`compareTo()` um Objekte miteinander zu vergleichen
|
|
|
|
- `<0`, wenn anderes Objekt "größer"
|
|
- `=0`, wenn gleich
|
|
- `>0`, wenn anderes Objekt "kleiner" ist
|
|
|
|
|
|
---
|
|
## Interface Comparator
|
|
|
|
```java
|
|
interface Comparator<T> {
|
|
int compare(T object1, T object2);
|
|
}
|
|
```
|
|
|
|
`compare()` vergleicht zwei Objekte
|
|
|
|
```java
|
|
class SortByHouseNumber implements Comparator<Adress> {
|
|
public int compare(Adress a1, Adress a2){
|
|
return a1.getHouseNumber - a2.getHouseNumber;
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
## Collections.sort
|
|
|
|
Anwendung mit Collections.sort:
|
|
|
|
1. über die natürliche Ordnung (compareTo())
|
|
`Collections.sort( List<T> list )`
|
|
|
|
|
|
2. mit Hilfe einer Comparators (compare())
|
|
`Collections.sort( List<T> list, Comparator<T> c )`
|
|
|
|
|
|
|
|
---
|
|
## Aufgaben
|
|
|
|
1) Implementiere einen `Comparator<Animal> SortByHealth`, welcher die Tiere nach aufsteigender `health` sortiert.
|
|
|
|
2) Implementiere einen `Comparator<Animal> SortByAge`, welche die Tiere nach absteigendem Alter sortiert.
|
|
|
|
3) Der Shepherd soll eine Methode `getSortedByAscendingHealth()` und `getSortedByDescendingAge()` anbieten, welcher die Liste umsortiert und das Ergebnis zurückgibt. |