Grüßt Euch,
ich beziehe mich mit meinem Post auf folgendes Thema:
http://www.java-forum.org/allgemeine-java-themen/63070-zwei-arraylist-s-vergleichen.html
Mir geht es um den Vergleich zweier XML-Dateien auf gleiche Werte.
Im obigen Thema dargestellte Methode funktioniert so weit, ich kann die Objekte aus der XML in eine ArrayList schreiben.
Vergleiche ich nun aber beide Array-Listen miteinander, erhalte ich eine leere Liste zurück, obwohl es sich (inhaltlich) um identische Objekte in beiden XML-Dateien handelt.
Hier noch etwas Quellcode:
Als Ergebnis erhalte ich in der JAVA-Console:
Ich habe schon versucht <Object> durch <String> zu ersetzen, kenne mich da noch nicht so aus und dachte das hilft vielleicht. Macht's aber nicht, ich erhalte das selbe Ergebnis.
Kann es daran liegen, dass nicht der Inhalt sondern der Zeiger auf das Objekt verglichen wird? (Das glaub ich zwar selbst nicht, aber man weiß ja nie).
Weiß jemand Rat?
Danke,
Gruß
Frutz
ich beziehe mich mit meinem Post auf folgendes Thema:
http://www.java-forum.org/allgemeine-java-themen/63070-zwei-arraylist-s-vergleichen.html
Mir geht es um den Vergleich zweier XML-Dateien auf gleiche Werte.
Im obigen Thema dargestellte Methode funktioniert so weit, ich kann die Objekte aus der XML in eine ArrayList schreiben.
Vergleiche ich nun aber beide Array-Listen miteinander, erhalte ich eine leere Liste zurück, obwohl es sich (inhaltlich) um identische Objekte in beiden XML-Dateien handelt.
Hier noch etwas Quellcode:
Java:
[...]
Element aktuellesElement = null;
ArrayList<Object> test = new ArrayList<Object>();
Element aktuellesElement2 = null;
ArrayList<Object> test2 = new ArrayList<Object>();
for (Object object : Extern){
aktuellesElement= (Element) object;
test.add(aktuellesElement.getValue());
//System.out.println( aktuellesElement.getValue() );
}
for (Object object2 : Extern2){
aktuellesElement2 = (Element) object2;
test2.add(aktuellesElement2.getValue());
//System.out.println( aktuellesElement2.getValue() );
}
System.out.println("Liste 1: "+ test );
System.out.println("Liste 2: "+ test2 );
ArrayList<Object> vergleich = new ArrayList<Object>();
vergleich.retainAll(test2);
System.out.println("Liste Vergleich: "+vergleich);
[...]
Als Ergebnis erhalte ich in der JAVA-Console:
Liste 1: [X00VG6V001, X00VG6V002, X00VG6V003, X00VG6V004, X00VG6V005, X00VG6V006, X00VG6V007, X00VG6V008, X00VG6V009, X00VG6V00A, X00VG6V00B, X00VG6V00C, X00VG6V00D, X00VG6V00E, X00VG6V00F, X00VG6V00G, X00VG6V00H]
Liste 2: [X00VG6V001, X00VG6V002, X00VG6V003, X00VG6V004, X00VG6V005, X00VG6V006, X00VG6V007, X00VG6V008, X00VG6V009, X00VG6V00A, X00VG6V00B, X00VG6V00C, X00VG6V00D, X00VG6V00E, X00VG6V00F, X00VG6V00G, X00VG6V00H]
Liste Vergleich: []
Ich habe schon versucht <Object> durch <String> zu ersetzen, kenne mich da noch nicht so aus und dachte das hilft vielleicht. Macht's aber nicht, ich erhalte das selbe Ergebnis.
Kann es daran liegen, dass nicht der Inhalt sondern der Zeiger auf das Objekt verglichen wird? (Das glaub ich zwar selbst nicht, aber man weiß ja nie).
Weiß jemand Rat?
Danke,
Gruß
Frutz