Es geht darum,eine abstrakte Klasse namens AbstractPerson zu schreiben
mit Vornamen,Nachnamen,usw.
Die Klassen Persdon und Comparable Person erben von dioeser Klasse und enthalten eine public boolean equals Methode, die überprüft, ob das Objekt null ist, und ob die Instanzvariablen gleichwertig sind.
Ich habe alle Instanzvariablen als Strings deklariert, dazu die Postleitzahl, da sie ja führende Nullen haben kann und als int würden sie verschwinden.Ebenso beim Geburtsjahr, da dieses ja auch als 79 ,anstattt 1979 angegeben werden kann.
ComparablePerson implementiert ebenso java.lang.Comparable<ComparablePerson>
Dies soll die CP-Objekte anhand des Nachnamens, Vornamens,usw. vergleichen.
Die mach ich durch die String.compareTo-Methode ,die von equals aufgerufen wird.
Mein Problem besteht in der Aufgabe:
Textdatei ,in der die Vornamen,nachnamen ....stehen,ungeordnet.10 Zeilen.
In der Klasse Names sollen die Methoden public static List getTestNames() und public static List getTestNamesComparable(), die jeweils die txt einlesen ,für jede Zeile
ein Objekt erzeugen und alle Objekte in einer Liste zurückgeben.
Meine Frage:
Umwandlung in ein String-Objekt oder Person oder ComparablePerson.Objekt?
Ich lese ja die Strings mit ner while-Schleife ein mit readLine().
Logischer ist ja das jeweils eine Zeile eine Person ergibt.
Soll ich die 4 "Wörter" einlesen und dann in ein Person-Objekt umwandeln und dieses dann der Liste hinzufügen?
Ich verstehe den Unterschied der beiden Methoden (wenn als String eingelesen wird)
nicht
Und was ist dann der Unterschied zu der Comparable-Methode?
Ich zeig mal was ich da so fabriziert habe:
und die Names:
Lese hier nur die Strings je Zeile ein und füge diese der Array-List hinzu.
Eine normale List kann man nicht erzeugen, bekomme ne Exception.
Kann mir einer sagen warum?
Is alles okay soweit????:L
mit Vornamen,Nachnamen,usw.
Die Klassen Persdon und Comparable Person erben von dioeser Klasse und enthalten eine public boolean equals Methode, die überprüft, ob das Objekt null ist, und ob die Instanzvariablen gleichwertig sind.
Ich habe alle Instanzvariablen als Strings deklariert, dazu die Postleitzahl, da sie ja führende Nullen haben kann und als int würden sie verschwinden.Ebenso beim Geburtsjahr, da dieses ja auch als 79 ,anstattt 1979 angegeben werden kann.
ComparablePerson implementiert ebenso java.lang.Comparable<ComparablePerson>
Dies soll die CP-Objekte anhand des Nachnamens, Vornamens,usw. vergleichen.
Die mach ich durch die String.compareTo-Methode ,die von equals aufgerufen wird.
Mein Problem besteht in der Aufgabe:
Textdatei ,in der die Vornamen,nachnamen ....stehen,ungeordnet.10 Zeilen.
In der Klasse Names sollen die Methoden public static List getTestNames() und public static List getTestNamesComparable(), die jeweils die txt einlesen ,für jede Zeile
ein Objekt erzeugen und alle Objekte in einer Liste zurückgeben.
Meine Frage:
Umwandlung in ein String-Objekt oder Person oder ComparablePerson.Objekt?
Ich lese ja die Strings mit ner while-Schleife ein mit readLine().
Logischer ist ja das jeweils eine Zeile eine Person ergibt.
Soll ich die 4 "Wörter" einlesen und dann in ein Person-Objekt umwandeln und dieses dann der Liste hinzufügen?
Ich verstehe den Unterschied der beiden Methoden (wenn als String eingelesen wird)
nicht
Und was ist dann der Unterschied zu der Comparable-Methode?
Ich zeig mal was ich da so fabriziert habe:
Code:
public class ComparablePerson extends AbstractPerson implements Comparable<ComparablePerson>{
public ComparablePerson(String vorname, String nachname, String geburtsjahr,
String postleitzahl) {
super(vorname, nachname, geburtsjahr, postleitzahl);
}
public ComparablePerson(ComparablePerson person){
this(person.vorname,person.nachname,person.geburtsjahr,person.postleitzahl);
}
public boolean equals(Object o){
if(!(o instanceof ComparablePerson)){
return false;
}
ComparablePerson other=(ComparablePerson)o;
return 0!=compareTo(other);
}
public int compareTo(ComparablePerson person) {
if(0!= this.nachname.compareTo(person.nachname)){
if(0!= this.vorname.compareTo(person.vorname)){
if(0!= this.geburtsjahr.compareTo(person.geburtsjahr)){
if(0!= this.postleitzahl.compareTo(person.postleitzahl)){
}
}
}
}
return 0;
}
}
Code:
public class Names {
public static void main (String arg[])throws IOException {
Locale.setDefault(Locale.US);
System.out.println(getTestNames());
System.out.println(getTestNamesComparable());
}
public static List getTestNames() throws IOException{
LineNumberReader read=new LineNumberReader(
new BufferedReader(
new FileReader(
new File( "../pr2/src/a01/testNamen.txt" )
)
)
);
String[]lines=new String[10];
ArrayList<String> namesList = new ArrayList<String>();
for(int i=0; i<lines.length;i++){
lines[i]=read.readLine();
namesList.add(lines[i]);
}
return namesList;
}
public static List getTestNamesComparable() throws IOException{
LineNumberReader read=new LineNumberReader(
new BufferedReader(
new FileReader(
new File( "../pr2/src/a01/testNamen.txt" )
)
)
);
String[]lines2=new String[10];
ArrayList<String> namesComparableList = new ArrayList<String>();
for(int i=0; i<lines2.length;i++){
lines2[i]=read.readLine();
namesComparableList.add(lines2[i]);
}
return namesComparableList;
}
}
Eine normale List kann man nicht erzeugen, bekomme ne Exception.
Kann mir einer sagen warum?
Is alles okay soweit????:L