List.isEmpty() klappt nicht?!?!?

Status
Nicht offen für weitere Antworten.

Tobias

Top Contributor
High,
ich habe eine Klasse, die zwei List-Objekte beinhaltet. Um überprüfen zu können, ob diese Listen etwas enthalten, rufe ich List.isEmpty() für die beiden auf und initialisiere je nach Rückgabewert eine boolean-Variable hasElements, die von außen abgefragt werden kann.
Wenn ich die Listen jedoch mit ArrayLists initialisiere, führt isEmpty() zu falschen Ergebnissen! Der Debugger gibt als Werte folgendes aus:

Code:
ArrayList ArrayList@46d:
[1] => null
[2] => null
.
.
.

Schön, schön, nur leider sind das die Default-Werte, die er beim Anlegen der ArrayList darein geschrieben hat! Sprich ich habe tatsächlich nichts in der List gespeichert!
Auch ein Cast und anschließendes Aufrufen von ArrayList.isEmpty() bringt nicht das gewünschte Ergebnis. Somit erkläre ich isEmpty() für schwachsinnig, bis mir jemand das Gegenteil beweist.

mpG
Tobias
 
B

bygones

Gast
kann ich ehrlich gesagt nichts ganz glauben...

die Methode isEmpty() liefert zurück, ob die interne Variable "size" gleich 0 ist. die Variable size wird beim erstellen einer Liste immer auf 0 initialisiert (außer man initialisiert die Liste mit einer Collection). Sie wird nur bei den add methoden geändert !!

Wenn du von deinem Code überzeugt bist dann poste doch mal ein bisschen davon, würde mich interessieren....
 

Tobias

Top Contributor
hasAnyFlags und hasAnyParameters sind die boolean-Variablen, flags und parameters die entsprechenden Listen. Konstruiert wird dieses Object im Moment zweimal (wird noch ein bißchen öfter vorkommen) und zwar einmal mit new Command(blah.getClass(), "command", new ArrayList(), new ArrayList()) und einmal mit new Command(blah.getClass(), "command", null, null).

Code:
public Command(Class recipient, String command, List flags,
                     List parameters) throws NullPointerException {
            if(recipient == null) {
                  throw new NullPointerException("Recipient is not permitted to"
                                                 + " be null!");
            }
            if(command == null) {
                  throw new NullPointerException("Command is not permitted to"
                                                 + " be null!");
            }

            if((flags == null) || (flags.isEmpty())) {
                  this.hasAnyFlags = false;
            }
            if((parameters == null) || (parameters.isEmpty())) {
                  this.hasAnyParameters = false;
            }

            this.recipient = recipient;
            this.command = command;
            this.flags = flags;
            this.parameters = parameters;
      }

Gechrieben hab ich das heute nacht, durchaus möglich, das ich ja doch was übersehen habe. Ich hoffe es sogar sehr!

mpG
Tobias
 
B

bygones

Gast
entweder habe ich dich nicht verstanden, oder ich kann den fehler nicht reproduzieren.
Wenn ich deinen Code nehmen und folgendes mach:
Code:
Command c = new Command(String.class, "command", new ArrayList(), new ArrayList());
System.out.println(c.hasAnyFlags);
System.out.println(c.hasAnyParameters);
Command c2 = new Command(String.class, "command", null, null);
System.out.println(c2.hasAnyFlags);
System.out.println(c2.hasAnyParameters);
erhalte ich für alle ausgaben false und das soll laut code auch so sein !

???:L ???:L
 

Tobias

Top Contributor
Verdammt, ja, das soll so sein.

Nichtsdestotrotz versucht da eine Funktion auf flags zuzugreifen und produziert so IndexOutOfBoundsExceptions, wenn flags leer ist. Der dortige Code sieht auf den ersten Blick aber ok aus... Ich werde ihn mal ausführlich mit dem Debugger analysieren. Und ich ziehe meine Kritik an List.isEmpty() natürlich zurück!

mpG
Tobias
 

Tobias

Top Contributor
Jaja, meine parse()-Methode funktioniert nicht so wie erwartet. Sie macht zwar genau das, was sie soll, wenn da was ist, aber nicht, wenn da nichts ist... Verdammte Randbedingungstests!

mpG
Tobias
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
Rakshan Reading through list of objects Allgemeine Java-Themen 8
L Unterschied zwischen List und LinkedList implementierung? Allgemeine Java-Themen 15
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
W Collections Suche etwas Sorted-List-Artiges...hat jemand eine Idee? Allgemeine Java-Themen 13
M List -Tableview-Javafx-Vererbung Allgemeine Java-Themen 35
R convert 2d array list to 2d array Allgemeine Java-Themen 1
B List<Integer> ist List<Double> ? Allgemeine Java-Themen 6
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
G Neues Objekt aus List<JsonObject> mit Stream Allgemeine Java-Themen 4
J Array-List Bubble-Sort Allgemeine Java-Themen 12
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
Hacer List<? super E> Allgemeine Java-Themen 10
C Objekte in Array List speichern? Allgemeine Java-Themen 1
P List<Type> Konvertieren in List<List<Type>> Allgemeine Java-Themen 3
P Sorted List o.ä. Allgemeine Java-Themen 2
M Erste Schritte List<> unbekannt?? Allgemeine Java-Themen 8
M List casting error Allgemeine Java-Themen 3
Messoras List zeigt nur das letzte Element an Allgemeine Java-Themen 14
K Collections Collection<> mit List<String> abgleichen? Allgemeine Java-Themen 10
A List<String> auf doppelte Einträge überprüfen Allgemeine Java-Themen 4
U EJB Entity mit List Problem Allgemeine Java-Themen 2
? Objects aus List aussortieren Allgemeine Java-Themen 9
B List Pointer zurücksetzen Allgemeine Java-Themen 10
J Elemente zu einer List hinzufügen? Allgemeine Java-Themen 9
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
N List auf null prüfen Allgemeine Java-Themen 2
G List<Person> sortieren Allgemeine Java-Themen 6
A Probleme mit ConcurrentHashMap und List Allgemeine Java-Themen 3
C Komisches Verhalten zwischen Set und List bei contains Allgemeine Java-Themen 6
N Inverted index / inverted list Allgemeine Java-Themen 2
X Eine Map mit X -> List<Y>? Allgemeine Java-Themen 8
Shoox HashMaps in List? Allgemeine Java-Themen 3
B Frage zu Interface und List Allgemeine Java-Themen 4
H List wird nicht richtig gefüllt Allgemeine Java-Themen 6
Z aus private List<???> list eintrag löschen Allgemeine Java-Themen 4
L List <Hauser> in Combobox einfügen Allgemeine Java-Themen 5
isowiz java.util.List: Sortierung nicht nach bestimmten Attribut? Allgemeine Java-Themen 4
K von List getSelected auf ResultSet Datenbank löschen Allgemeine Java-Themen 2
E Speicher frei machen (List) Allgemeine Java-Themen 9
K List in Teillisten zerlegen Allgemeine Java-Themen 2
B Probleme mit awt.List in Chatprogramm Allgemeine Java-Themen 14
MQue List<String> aus List<Object> generieren Allgemeine Java-Themen 2
B List = ArrayList ? Allgemeine Java-Themen 12
N List<? implements "Interface"> geht nicht Allgemeine Java-Themen 13
G Byte- List mit einem Iterator durchlaufen Allgemeine Java-Themen 5
G Linked List zwischen zwei Threds übergeben Allgemeine Java-Themen 11
S List<Double> oder Double[] in double[] zu konvertieren Allgemeine Java-Themen 6
G Methode akzeptiert List<ParentClass> aber nicht List&l Allgemeine Java-Themen 2
G List- Einträge löschen Allgemeine Java-Themen 3
G java.util.List klonen Allgemeine Java-Themen 17
S Collections.binarySearch(list,"a") Allgemeine Java-Themen 7
K Bound mismatch: The generic method sort(List<T>) of ty Allgemeine Java-Themen 4
K "Too many open files" bei Property List Allgemeine Java-Themen 5
P List in Hashmap schreiben Allgemeine Java-Themen 5
J linked list per reverse() "umdrehen" Allgemeine Java-Themen 11
P java.util.List - Typ überschreiben Allgemeine Java-Themen 9
G Arraylist statt List - Sehr schlimm? Allgemeine Java-Themen 8
G List mit selbstdefinierten Objekten sortieren Allgemeine Java-Themen 2
M Datenstrukrue, List<Map<Integer, Map<String, . Allgemeine Java-Themen 2
F List<String> zu byte[] Allgemeine Java-Themen 7
G Map oder List mit festgelegter Reihenfolge Allgemeine Java-Themen 4
M Pendant zu list() und array() aus PHP in Java gegeben? Allgemeine Java-Themen 5
J Problem mit List Allgemeine Java-Themen 2
byte Generic Type einer List zur Laufzeit rausfinden? Allgemeine Java-Themen 4
S Generics List Allgemeine Java-Themen 3
G Inhalt einer Textdatei in eine AWT List schreiben Allgemeine Java-Themen 3
C access control list in java Allgemeine Java-Themen 7
E Welche Java-Version kennt isEmpty() ? Allgemeine Java-Themen 2
R if (obj == null || obj.isEmpty()) Allgemeine Java-Themen 21
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
D ArrayListe delete Methode klappt nicht Allgemeine Java-Themen 12
F URI mit Parameter klappt nicht Allgemeine Java-Themen 1
L sortiertes Array im main aufrufen klappt nicht. Allgemeine Java-Themen 3
K Eingabe mit Char vergleichen klappt nicht! Allgemeine Java-Themen 2
X Löschen von einer Zeile in einer Text Datei. Klappt nicht. Allgemeine Java-Themen 4
J Java Dateidownload klappt bei einigen Datein nicht Allgemeine Java-Themen 7
F Input/Output "transient" klappt nicht wie gewünscht Allgemeine Java-Themen 1
S XML lesen, verarbeiten, speichern klappt in Eclipse, aber nicht in der JAR Allgemeine Java-Themen 4
T JavaScript put klappt nicht Allgemeine Java-Themen 6
K Copy/Paste klappt nicht einwandfrei Allgemeine Java-Themen 15
M Datums vergleich klappt überhaupt nicht.. Allgemeine Java-Themen 4
Z Desktop anzeigen + Screenshot klappt nicht Allgemeine Java-Themen 3
B Datentypen wav Dateien abspielen mit JMF, Clip und Player klappt nicht. Lösung Codec? Allgemeine Java-Themen 13
T Java in Website einbinden klappt i-wie nicht Allgemeine Java-Themen 13
K datenübernahme klappt und klappt nicht Allgemeine Java-Themen 5
R import von Jasper (für SICStus Prolog) klappt nicht Allgemeine Java-Themen 2
J importjava.utilArrayList; klappt nicht Allgemeine Java-Themen 2
B Browserstart klappt nicht mit JAR Allgemeine Java-Themen 5
0 Runtime.exec() VLC starten klappt nicht Allgemeine Java-Themen 9
H2SO3- Warum klappt DateFormat MM.dd.yyyy bei 15.11.2003 Allgemeine Java-Themen 2
T Button Array verschieben klappt nicht. Allgemeine Java-Themen 6
H this klappt nicht Allgemeine Java-Themen 10
Y PropertyMap: Zugriff über konkatenierten String klappt nicht Allgemeine Java-Themen 7
J einfachster Servlet-Aufruf klappt nicht Allgemeine Java-Themen 3
L Vererbung klappt nicht Allgemeine Java-Themen 5
M Da klappt was mit getMemory nicht Allgemeine Java-Themen 5
H Speicher freigeben klappt nicht bei Image Objekten, warum? Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben