\begin{slide}{Eingeschränkte Polymorphie}

\verb|TreeSet<E>| nur dann sinnvoll,
wenn die Schlüssel total geordnet sind

Bedingungen an Schablonenparameter stellen:
\begin{verbatim}
interface Comparable<E> {
   int compareTo (E x); 
}
class TreeSet<E implements Comparable<E>> { }
\end{verbatim}


\bigskip

Übung: Axiome für totale Ordnungen
in Java-API-Doc nachlesen

\end{slide}

\begin{slide}{Strategie-Muster}

vorige Folie ist nicht ganz die Wahrheit,
weil man eventuell auch eine andere als die natürliche 
Ordnung benutzen möchte. Deswegen auch Konstruktor

\begin{verbatim}
TreeSet<E> ( Comparator<E> c );
\end{verbatim}
wobei 
\begin{verbatim}
interface Comparator<E> { int compare (E x, E y); }
\end{verbatim}
Benutzung z. B. mit anonymer Klasse
\begin{verbatim}
TreeSet<String> s = new TreeSet<String> (
  new Comparator<String> {
    int compare (String x, String y) {
        return ...
    }
  });
\end{verbatim}

\end{slide}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
