Guten Tag,
hier sind zwei Klassen:
Das Interface
Nun weiß ich nicht ob es mit einem Set überhaupt geht wenn nicht muss ich alles in eine Liste machen.
Was ich tun möchte ist, bei Person nach dem Nachnamen vergleichen sollten diese gleich sein soll nach dem Vornamen verglichen werden dann nach dem Vorname und danach nach dem Titel.
Somit soll z. B.:
Person p1 = new Person("Max", "Mustermann");
Person p2 = new Person("Dr", "Max", "Mustermann");
p1 und p2 sollen eingeordnet werden können.
Leider stehe ich hierbei irgendwie super auf dem Schlauch. Ich hab schon so etwas ausprobiert doch das ist ja Käse
Kann mir da jemand eine Idee geben?
hier sind zwei Klassen:
Java:
import java.util.*;
public class Gruppe implements Contact, Comparable<Contact> {
String name;
Set<Contact> eintraege;
Gruppe() {
}
Gruppe(String n) {
eintraege = new TreeSet<>();
name=n;
}
public boolean add(Contact c) {
if(c!=this)
return eintraege.add(c) ;
return false;
}
public String toString() {
String ret = name;
Iterator<Contact> it = entries.iterator();
while(it.hasNext())
ret+="\n"+it.next().toString();
return ret;
}
@Override
public int compareTo(Contact c) {
if(c instanceof Gruppe) {
return name.compareTo(((Gruppe) c).name);
}
return 1;
}
}
Java:
import java.util.*;
public class Person implements Contact, Comparable<Contact>{
String title;
String firstName;
String lastName;
Person(String f, String l) {
this(null,f,l);
}
Person(String t, String f, String l) {
title=t;
firstName=f;
lastName=l;
}
public String toString() {
return (title!=null) ?
title+" "+((firstName!=null)?firstName+" "+((lastName!=null)?lastName:"") :"")
: firstName!=null?firstName+" "+lastName:"";
}
@Override
public int compareTo(Contact o) {
if(o instanceof Person) {
return lastName.compareTo(((Person) o).lastName);
}
else
return -1;
}
}
Das Interface
Java:
public interface Contact {
// nothing here marker interface
}
Nun weiß ich nicht ob es mit einem Set überhaupt geht wenn nicht muss ich alles in eine Liste machen.
Was ich tun möchte ist, bei Person nach dem Nachnamen vergleichen sollten diese gleich sein soll nach dem Vornamen verglichen werden dann nach dem Vorname und danach nach dem Titel.
Somit soll z. B.:
Person p1 = new Person("Max", "Mustermann");
Person p2 = new Person("Dr", "Max", "Mustermann");
p1 und p2 sollen eingeordnet werden können.
Leider stehe ich hierbei irgendwie super auf dem Schlauch. Ich hab schon so etwas ausprobiert doch das ist ja Käse
Java:
@Override
public int compareTo(Contact o) {
if(o instanceof Person) {
if(lastName.compareTo(((Person) o).lastName) != 0)
return lastName.compareTo(((Person) o).lastName);
else if(firstName.compareTo(((Person)o).firstName) != 0)
return firstName.compareTo((((Person)o).firstName));
else
return title.length()-((Person) o).title.length();
}
return -1;
}
Kann mir da jemand eine Idee geben?