[SOLVED] Collection wird nicht richtig per Konstruktor übernommen

Status
Nicht offen für weitere Antworten.

diggaa1984

Top Contributor
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.
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:

Marco13

Top Contributor
Viel schlimmer: Der Comparator schmeißt alle Strings raus, die die gleiche Länge haben, wie irgendein anderer :eek:

EDIT: Das ist ja auch genau der Sinn von einen Set. Wenn du alle Strings beibehlten willst, kannst du eine Liste machen, und die dann mit
Collections.sort(liste, comparator);
sortieren - DORT kannst du dann den Comparator verwenden, den du im Moment für den TreeSet verwendest...
 

diggaa1984

Top Contributor
@Sebi90 nein .. 100% alle unterschiedlich .. das seh ich auch in der GUI ... kannst ja mal checken :D

 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
Viel schlimmer: Der Comparator schmeißt alle Strings raus, die die gleiche Länge haben, wie irgendein anderer :eek:

EDIT: Das ist ja auch genau der Sinn von einen Set. Wenn du alle Strings beibehlten willst, kannst du eine Liste machen, und die dann mit
Collections.sort(liste, comparator);
sortieren - DORT kannst du dann den Comparator verwenden, den du im Moment für den TreeSet verwendest...

LOL wasn geiler Fehler, aber ok ich dachte der sortiert die dann einfach nicht, sondern fügt die einfach am Ende (edit: klasse .. n Ende innem Set ???:L naja ok :) ) ein oder so. Sinn vonnem Set bestand bei mir darin identische Strings nicht hinzuzufügen, das er identische Länge als identisch nimmt liegt dann wohl am Comparator!? habsch wohl was noch nich direkt verstanden.

Ok danke Marco13, hat geklappt.
Wieder was gelernt

Edit: push .... hatte ich schon gelesen .. mein screen dauerte nur ne weile :)
 
Zuletzt bearbeitet:

SebiB90

Top Contributor
btw: wie wärs mit so nem comparator
Java:
public int compare(String str1, String str2) {
  int retVal = Integer.valueOf(str2.length()).compareTo(str1.length());                       
  if(retVal == 0)
    retVal = str1.compareTo(str2);
  return retVal;
}//compare
 

diggaa1984

Top Contributor
der würde die natürlich Ordnung nochmal drüberlegen oder? also erst vom längsten zum kürzesten String und dabei nochma lexokographisch?

Mit Sicherheit eine feine Sache, aber für meine Funktionalität nicht ausschlaggebend
Danke dennoch
 

SebiB90

Top Contributor
jap, so ist es.
auch wenn du die lexographische reihenfolge bei gleich langen zeichen nicht brauchst, hast du so aber alle deine anderen Voraussetzungen. Kein String kommt doppelt vor wegen dem Set und sie sind nich ihrer Länge sortiert durch den Comparator ohne das welche rausgeschmissen werden, die eigentlich drin bleiben sollen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W [solved] Vector sortieren (Collection / Comparable?) Allgemeine Java-Themen 7
K Java 8 Sicherheitswarnung abschalten [solved] Allgemeine Java-Themen 1
M [Solved] StringIndexOutOfBoundsException Allgemeine Java-Themen 1
V [solved]Von Java Prog über ein JSP/Servlet auf DB zugreifen Allgemeine Java-Themen 3
W [Solved] RegEx (Text ersetzten mit gefundenem - $id) Allgemeine Java-Themen 2
W String.substring und UTF-16-Konformität [solved] Allgemeine Java-Themen 5
M [SOLVED]MVC, einmalige aktionen Allgemeine Java-Themen 7
A [SOLVED] Classpath und statische Variablen Allgemeine Java-Themen 6
Rakshan Generic reading of XML document from the root tag into an Collection Allgemeine Java-Themen 0
JavaJüngling beliebige Collection die Comperable Elemente enthält als Parameter Allgemeine Java-Themen 37
W Collections Suche Collection, um Strings mit Indizees versehen Allgemeine Java-Themen 47
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
Y String-Collection: längste gemeinsame Strings / Prefixe Allgemeine Java-Themen 3
S Probleme mit Collection Allgemeine Java-Themen 7
S Passende Java Collection Allgemeine Java-Themen 5
D Eigene/r Collection/Container Allgemeine Java-Themen 3
K Collections Collection<> mit List<String> abgleichen? Allgemeine Java-Themen 10
D Beste Collection für Integer Allgemeine Java-Themen 4
H JPA (EclipseLink) Neuer Eintrag in Collection speichern (unidirektional) Allgemeine Java-Themen 3
M Collections Typ Variable einer generischen Collection ? Allgemeine Java-Themen 4
T Garbage Collection Frage Allgemeine Java-Themen 15
H Datentypen Collection für SQL-Datentypen Allgemeine Java-Themen 2
M collection persistence system Allgemeine Java-Themen 4
K associate collection with two open sessions Allgemeine Java-Themen 12
B Garbage Collection Logfile: Binary File Allgemeine Java-Themen 2
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
S Stilfrage bezüglich Beans mit Collection-Properties Allgemeine Java-Themen 2
B iText Portable Collection Acrobat X Allgemeine Java-Themen 2
S Eine Collection von Objekten mit LDAP Syntax filtern Allgemeine Java-Themen 5
Rudolf Aus Collection<Integer> eine Zahl machen Allgemeine Java-Themen 2
R Dateigestützte Collection für große Datenmengen Allgemeine Java-Themen 5
hdi Garbage Collection Allgemeine Java-Themen 12
P Collection Tree Allgemeine Java-Themen 19
C Die schnellste Collection-Klasse ? Allgemeine Java-Themen 37
K Collection.contains()/retainAll() mit Referenzgleichheit statt equals()? Allgemeine Java-Themen 2
W return Collection mit schleife durchsuchen Allgemeine Java-Themen 10
E Collection Problem Allgemeine Java-Themen 2
B Geordnete, begrenzte Collection Allgemeine Java-Themen 3
S Wahl der Collection, unspezifizierte Elementtypen Allgemeine Java-Themen 4
D Map mit Collection Eigenschaften Allgemeine Java-Themen 9
T Objekt der Garbage Collection zugaenglich machen? Allgemeine Java-Themen 7
S Innerer Type einer generischen Collection herausfinden? Allgemeine Java-Themen 13
B SBCC - Swing Better Components Collection - downloadlink ? Allgemeine Java-Themen 5
G Schnelligkeit einer Collection Allgemeine Java-Themen 12
V Collection in Collection Allgemeine Java-Themen 3
M Collection aufteilen Allgemeine Java-Themen 4
S Collection Type Allgemeine Java-Themen 8
S Probleme mit collection.containsAll Allgemeine Java-Themen 28
F Frage zu Memory Leak, Garbage Collection und Profiler-Tools Allgemeine Java-Themen 6
C Collection Multithreading? Allgemeine Java-Themen 33
vogella Überschreiben von equals und hashcode für Collection Allgemeine Java-Themen 7
T Hibernate Criteria Queries - Abfragen von Collection-Members Allgemeine Java-Themen 2
M Schnellste Collection/Liste Allgemeine Java-Themen 15
M Collection mit ArrayList Allgemeine Java-Themen 17
F mittels Collection<A> an A.class kommen? Allgemeine Java-Themen 7
L Welche Collection ist die richtige ? Listen mergen Allgemeine Java-Themen 3
B Collection Allgemeine Java-Themen 2
M Wie lange dauert ein garbage collection Allgemeine Java-Themen 7
R Garbage Collection bei gegenseitiger Objektreferenz Allgemeine Java-Themen 2
N Collection#retainAll(Collection<?> c) Allgemeine Java-Themen 3
M garbage collection Allgemeine Java-Themen 14
G Frage zur Garbage Collection Allgemeine Java-Themen 5
R Objekttyp ermitteln das aus generischer Collection kommt Allgemeine Java-Themen 3
J Von Collection zu vector Allgemeine Java-Themen 5
P Welche Collection verwenden? Allgemeine Java-Themen 4
S Sortierung einer Collection nach dem Attribut "name&quo Allgemeine Java-Themen 3
C Collection Element ersetzen Allgemeine Java-Themen 5
C public boolean containsAll(Collection c) Allgemeine Java-Themen 2
C Collection, LinkedList, Elemente Allgemeine Java-Themen 4
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Y MVVM wie wird Eventhandler tausch geregelt Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
T ImageIcon wird nicht angezeigt Allgemeine Java-Themen 6
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
N warum wird es doppelt ausgegeben Allgemeine Java-Themen 6
A code wird nicht ausgeführt Allgemeine Java-Themen 3
Y Warum wird das JLabel falsch verschoben? Allgemeine Java-Themen 1
T Schaltfläche wird nicht gefunden Allgemeine Java-Themen 4
N Eingabe wird immer als "false" ausgegeben Allgemeine Java-Themen 6
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
M Frage-Antwortspiel wie Wer wird Millionär Allgemeine Java-Themen 1
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
R Was muss ich ändern, damit der Kreis links unten gezeichnet wird? Allgemeine Java-Themen 17
hello_autumn Java_Home geändert auf Java 13, trotzdem wird Java Version 8 angezeigt. Allgemeine Java-Themen 2
Thallius Char +1 wird int? Allgemeine Java-Themen 7
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
F Scrollbar wird nicht angezeigt Allgemeine Java-Themen 0
B Discord Bot - Funktion wird nicht aufgerufen Allgemeine Java-Themen 1
I Temp-Datei wird nicht gelöscht Allgemeine Java-Themen 12
S If-Menü wird doppelt ausgegben Allgemeine Java-Themen 4
P Variable wird in for - loop nicht richtig hochgezählt Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben