Java:
public class Student {
private int matrikelnummer;
private String nachname;
private String vorname;
public Student (String n, String v, int mnr) {
nachname = n;
vorname = v;
matrikelnummer = mnr;
}
public int getMatrikelNr() {
return matrikelnummer;
}
public String getNachname() {
return nachname;
}
public String getVorname() {
return vorname;
}
public void print() {
System.out.println ("Nachname: " + nachname);
System.out.println ("Vorname: " + vorname);
System.out.println ("Matrikelnummer: " + matrikelnummer);
}
}
// Klasse Nachnamevergleicher
import java.util.*;
public class NachnameVergleicher implements Comparator<Student> {
public int compare(Student s1, Student s2){
if( s1.getNachname() == null && s2.getNachname() == null) {
return 0;
}
if( s1.getNachname() == null){
return 1;
}
if (s2.getNachname() == null){
return -1;
}
return s1.getNachname().compareTo(s2.getNachname());
}
}
// Klasse Studentensortierer
import java.util.*;
public class StudentenSortierer {
public static void main (String[] args) {
ArrayList <Student >liste = new ArrayList<Student>();
liste.add (new Student ("Mayer", "Martin", 123478));
liste.add (new Student ("Hauser", "Ingo", 12346));
liste.add (new Student ("Munk", "Tilo", 123477));
liste.add (new Student ("Meier", "Frank", 123456));
print ("Liste unsortiert:\n", liste);
Collections.sort (liste);
print ("Liste sortiert nach Nachnamen:\n", liste);
}
public static void print (String titel, List<Student> studenten) {
System.out.println ("-------------------------------");
System.out.println (titel);
for (Student studi : studenten) {
System.out.println (studi.getMatrikelNr() + "\t" +
studi.getNachname() + "\t" +
studi.getVorname());
}
}
}
bin gerade dabei sortierungen von collections zu erlernen´.aber ich blick noch nicht ganz durch.
Man kann das Interface Comperator verwende,was von den ListKlassen impelementiert wird?!
die schwierigkeit besteht ja darin, die methode zu schreiben,welche nach bestimmten kriterien sortiert.hier möchte ich nach dem nachnamen des studenten sortieren.nur das klappt offensichtlich nicht ^^. könnt ihr mir mal anhand dieses beispiels erklären, was das comperator interface genau macht und wie man diese "vergleichsmethoden" schreibt?
vielen dank