Programmieren_1/compare.md

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.