Was läuft mit meiner Liste in Java falsch?

 - (Computer, Programmieren, Informatik)

4 Antworten

Deine Funktion sieht etwas komisch aus, da man in Java so eher keine Duplikate in einer Liste entfernen würde. Du müsstest mal zeigen, was die Methode entfernen() macht, da könnte ein Fehler drin sein. Alternativ hier auch paar üblichere Vorschläge:

for(int i = 0; i<einkaufsliste.size(); i++)  {

for(int j = 0; j<einkaufsliste.size(); j++)   {

if(i != j)  {

String e1 = einkaufsliste.get(i);

String e2 = einkaufsliste.get(j);

if(e1.equalsIgnoreCase(e2)) {

einkaufsliste.remove(j);

}

}

}

}

Oder ab Java 1.8 auch einfach:

einkaufsliste =

einkaufsliste.stream() .sorted().distinct().collect(Collectors.toList());

Woher ich das weiß:Studium / Ausbildung

Du springst in deinem inneren Loop in der Einkaufsliste weiter.

Du benutzt praktisch für innen als auch für außen die gleiche Zählvariable.

Du musst dir irgendwie merken, wo du im äußeren Loop gerade bist.

Probier doch mal for loops, wenn du Elemente am Index aufrufen kannst.

Und natürlich String mit .equals vergleichen, wenn du in Java bist.

Entferne mal das erste "einkaufsliste.geheZumNaechstenKnoten();" , also die erste Zeile in der inneren while Schleife und probiers nochmal

Naja, ansonsten würde sich das erste Element doch löschen

0
@Troubletvri

Stimmt, habe es erst falsch gelesen. Die Antwort von Lamanini sollte helfen.

0

Probiers mal mit equals anstatt ==

element.equals(element2)

Hat nichts verändert.

0
@Troubletvri
Set<String> content = new HashSet<>();

while(einkaufsliste.pruefeAufAktuellesObjektt()) {
   String element = einkaufsliste.holeObjekt();

   if(content.contains(element)) {
      einkaufsliste.entfernen();
   } else {
      content.add(element);
   }
}
1

Was möchtest Du wissen?