Prüfen, ob in einer ArrayList etwas ist (Java)?
Ich möchte die Eingabe aus dem Textfeld nur in die ArrayList hinzufügen, wenn es sie noch nicht gibt. Wie kann ich das machen?
Mein Code sieht bis jetzt so aus:
public void Listehinzufügen(ArrayList arraylist){ arraylist = new ArrayList(); arraylist.add(jTextFieldName.getText()); if () { } else { for (String text: arraylist) { jTextArea1.append("Aufgabe: " + text + "\n"); } }}
Was muss ich bei if schreiben?
Danke schonmal im Voraus
3 Antworten
Ein Array oder eine Liste zu verwenden ergibt hier keinen Sinn. Du willst eine Collection, welche keine doppelten Elemente enthält. Genau diese Datenstruktur ist ein Set:
http://download.oracle.com/javase/tutorial/collections/interfaces/set.html
Ein LinkedHashSet wäre sinnvoll, weil es die Reihenfolge der enthaltenen Objekte beibehält (wie eine Liste). Ein Set an sich garantiert erstmal keine Reihenfolge - kann jedes mal was anderes rauskommen.
der code macht absolut keinen sinn. Du übergibst der methode eine arraylist als parameter und dann machst du arraylist = new ArrayList();
Warum?!
ob eine ArrayList leer ist, kannst du mit ArrayList.isEmpty() überprüfen.
Alle Container die das Collection-Interface implementieren stellen eine Methode contains(Object obj) zur Verfügung, die true zurückgibt falls das übergebene Objekt enthalten ist. Hierbei wird mit equals() geprüft, nicht mittels == !
Genau deshalb verwenden sämtliche Collections auch equals() um Objekte zu vergleichen, etwa bei contains(). Dann kommt auch true raus, wenn es nicht das selbe Stringobjekt ist, aber der selbe Text drinne ist.
Er will sicher nicht mehrere wertgleiche Strings in seiner Collection haben, wenn er zweimal den selben Text eintippt. Hab ich jedenfalls so verstanden...
Das ist ja schön und gut, bringt für die Aufgabenstellung aber nichts. Denn zwei wertgleiche Strings können in Java vollkommen verschiedene Objekte sein. Einfaches Beispiel: