hiho,
hab grad nen komisches Problem lokalisiert.
Ich lese aus einer Datei eine Menge von Strings aus. Diese Liste übergebe ich dann zum einen intern an eine andere Klasse, welche alle diese Strings intern übernehmen soll, und zum anderen geht diese Liste per return-Anweisung an den Aufrufer zurück.
Fehlerhaft heisst momentan, das ich von einst ca. 200 Strings nur noch 20 im Formel-Optimierer habe.
Was ich mal gelesen habe, das dieses Comparator-Zeugs nich ganz für Strings funktionieren soll. Habs leider auf die Schnelle nicht mehr gefunden, wurde aber in der API explizit erwähnt. Ich dachte ich machs dennoch mal, aber nu scheints ja doch irgendwie zu stimmen, habe den Fehler erst jetzt bemerkt, nachdem ich sogar mit diesem Fehler oft erfolgreiche Tests in meinem Parser durchführen konnte. ???:L
Kann jemand vermuten warum die interne Liste nach addAll nicht alles übernimmt!?
hab grad nen komisches Problem lokalisiert.
Ich lese aus einer Datei eine Menge von Strings aus. Diese Liste übergebe ich dann zum einen intern an eine andere Klasse, welche alle diese Strings intern übernehmen soll, und zum anderen geht diese Liste per return-Anweisung an den Aufrufer zurück.
Java:
//die aufgerufene Methode
private Collection<String> placenames;
public Collection<String> readPlacenamesFromFile(File f) throws IOException {
placenames = PetrinetFileReader.readPlacenamesFromFile(f);
System.out.println(placenames); // ====> KORREKT
formOpt.setPlacenames(placenames);
return new ArrayList<String>(placenames); // ====> GUI zeigt KORREKT an
}//readPlacenamesFromFile
Java:
//diese Klasse soll die Bezeichner komplett übernehmen
public class FormulaOptimizer {
/** stores placenames that have to be replaced */
private SortedSet<String> placenames;
/**
* Default constructor.
*/
public FormulaOptimizer() {
placenames = new TreeSet<String>(new Comparator<String>() {
public int compare(String str1, String str2) {
return Integer.valueOf(str2.length()).compareTo(str1.length());
}//compare
});
}//constructor
/**
* Replaces existing collection of placenames by <tt>placenames</tt>. All elements of the given
* collection are copied.
*
* @param placenames
*/
public void setPlacenames(final Collection<String> placenames) {
this.placenames.clear(); //löschen aller alten
System.out.println(placenames); //parameter KORREKT
this.placenames.addAll(placenames); //übernehmen aller Bezeichner aus Parameter
System.out.println(this.placenames); //interne Liste FEHLERHAFT
}//setPlacenames
//Rest beeinflusst interne Liste nicht
}
Fehlerhaft heisst momentan, das ich von einst ca. 200 Strings nur noch 20 im Formel-Optimierer habe.
Was ich mal gelesen habe, das dieses Comparator-Zeugs nich ganz für Strings funktionieren soll. Habs leider auf die Schnelle nicht mehr gefunden, wurde aber in der API explizit erwähnt. Ich dachte ich machs dennoch mal, aber nu scheints ja doch irgendwie zu stimmen, habe den Fehler erst jetzt bemerkt, nachdem ich sogar mit diesem Fehler oft erfolgreiche Tests in meinem Parser durchführen konnte. ???:L
Kann jemand vermuten warum die interne Liste nach addAll nicht alles übernimmt!?
Zuletzt bearbeitet: