Wie kann ich den Index i von einer LinkedList überprüfen?

Midazolam

Mitglied
Hi,

bei einem Array kann man mit Hilfe einer for-Schleife ja durch das Array iterieren, um dann zum Beispiel bei array(3) zu überprüfen, ob der Wert z.B. 4 ist.

Wie kann ich den Index i von einer LinkedList überprüfen? Hab nicht wirklich gefunden was ich Suche.
 

Oneixee5

Top Contributor
Java:
        final LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("A");
        linkedList.add("B");
        linkedList.add("C");

        if (Objects.equals(linkedList.get(1), "B")) {
            System.out.println("💥");
        }

        System.out.println("---");

        for (final Iterator<String> iterator = linkedList.iterator(); iterator.hasNext();) {
            final String string = iterator.next();
            if (Objects.equals(string, "B")) {
                iterator.remove();
                System.out.println("🔥");
            } else {
                System.out.println(string);
            }
        }

        System.out.println("---");

        for (final String string : linkedList) {
            if (Objects.equals(string, "C")) {
                System.out.println("💥");
            } else {
                System.out.println(string);
            }
        }

        System.out.println("---");

     
         for (int i = 0; i < linkedList.size(); i++) {
            final String string = linkedList.get(i);
            if (Objects.equals(string, "C")) {
                System.out.println("💥");
            } else {
                System.out.println(string);
            }
        }
      
        System.out.println("---");

        linkedList.forEach(string -> {
            if (Objects.equals(string, "C")) {
                System.out.println("💥");
            } else {
                System.out.println(string);
            }
        });
       
        System.out.println("---");

        linkedList.stream().forEach(string -> {
            if (Objects.equals(string, "C")) {
                System.out.println("💥");
            } else {
                System.out.println(string);
            }
        });

        final Iterator<String> iterator = linkedList.iterator();
        iterator.forEachRemaining(string -> {
            if (Objects.equals(string, "C")) {
                System.out.println("💥");
            } else {
                System.out.println(string);
            }
        });
 
Zuletzt bearbeitet:

Midazolam

Mitglied
Hm ok, noch nicht ganz das was ich Suche oder ich kann es nicht richtig anwenden.
Nochmal spezifischer :D :

Wie kann ich überprüfen, ob die LinkedList ein Enum enthält also z.B. einen Wochentag?
 
K

kneitzel

Gast
Wie kann ich überprüfen, ob die LinkedList ein Enum enthält also z.B. einen Wochentag?
Also generell solltest Du wissen, was in der LinkedList ist. Dazu dienen ja die Generics. Das hat den Hintergrund, dass man in der Regel typsicher entwickeln möchte.

Aber wenn Du nicht weisst, was drin ist, dann kannst Du mit instanceof prüfen, ob das Element z.B. vom typ einer Enum ist. Also etwas wie:
if (list.get(i) instanceof MyEnum)

Richtig. Gegebenenfalls .equals() bei Strings.
Nicht nur bei Strings sondern bei allen Klassen ist equals der bessere Weg.
 

Midazolam

Mitglied
Es geht um eine Art Filterfunktion. Ich möchte überprüfen, ob auf der Liste Elemente aus dem Enum vorhanden sind.
Wenn ich dazu .equals() verwenden kann erschließt sich mir der richtige Syntax nicht ganz
 
K

kneitzel

Gast
Du kannst dazu auch generell equals verwenden. Da wäre es dann etwas wie:
if (list.get(i).equals(MyEnum.SOME_VALUE))

Aber vielleicht zeigst Du uns einfach den ganzen Code, um den es Dir hier geht und dann kann man Dir besser helfen.
 

Midazolam

Mitglied
Java:
public enum Allergen {

    NUTS, PEANUTS, SOYBEANS, GLUTEN, FISH, MILK, EGGS;

}

import java.util.LinkedList;

abstract class Item implements ItemInfo {

    private double price;
    private int ID;
    private LinkedList<Allergen> allergenes = new LinkedList<Allergen>();




    public double getPrice() {
        return price;
    }
    public int getID() {
        return ID;
    }
    public LinkedList<Allergen> getAllergenes() {
        return allergenes;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public void setID(int iD) {
        ID = iD;
    }
    public void setAllergenes(LinkedList<Allergen> allergenes) {
        this.allergenes = allergenes;
    }


}

import java.util.LinkedList;

public class StorageManager extends Employee {


    private LinkedList<Item> items = new LinkedList<Item>();


    public boolean buyNewItem(Object Item) {

        if (items.contains(Item)) {
            return false;
        } else {
            items.add((Item) Item);
            return true;
        }


    }


    public LinkedList<Item> filterStorage() {

        LinkedList<Item> newItems = new LinkedList<Item>();

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

            //Hier muss überprüft werden, ob die Allergene aus dem Enum
            // "Allergen" in der Liste vorhanden sind, wenn ja sollen diese
            //in "newItems" kopiert werden.

            newItems.add(items.get(i));



        }
        return newItems;

    }

    public LinkedList<Item> getItems() {
        return items;
    }


    public void setItems(LinkedList<Item> items) {
        this.items = items;
    }


}
Das dürften alle relevanten Teile vom Code sein. "Der StorageManager moechte alle Artikel (items) filtern. Als Filter dient hier ein Objekt aus dem Enum Allergen. Es soll jedes Item, welches den Filter in seiner allergen-Liste enthaelt, in eine neue LinkedList kopiert werden. Diese soll am Ende zurueckgegeben werden."
 

Oneixee5

Top Contributor
Du kannst dazu auch generell equals verwenden. Da wäre es dann etwas wie:
if (list.get(i).equals(MyEnum.SOME_VALUE))

Aber vielleicht zeigst Du uns einfach den ganzen Code, um den es Dir hier geht und dann kann man Dir besser helfen.
Das ist eigentlich eine schlechte Idee, da LinkedList auch null enthalten kann. Man sollte immer Objects.equals verwenden.
 

mrBrown

Super-Moderator
Mitarbeiter
Das ist eigentlich eine schlechte Idee, da LinkedList auch null enthalten kann. Man sollte immer Objects.equals verwenden.
Würde ich aus genau dem Grund nicht mit Objects.equals machen: entweder die Liste soll null enthalten, dann lieber mit !=null explizit machen, oder da soll fachlich kein null drin sein, dann equals und durch die NPE den Fehler damit wenigstens finden können.
 

Oneixee5

Top Contributor
Würde ich aus genau dem Grund nicht mit Objects.equals machen: entweder die Liste soll null enthalten, dann lieber mit !=null explizit machen, oder da soll fachlich kein null drin sein, dann equals und durch die NPE den Fehler damit wenigstens finden können.
Eine NPE ist eine EntwicklerZuBlödException, dass hat nichts mit Fehlersuche zu tun. Für die Fehlersuche würde sich z.B.: Objects.requireNonNull(String obj, String message), eine Assertition oder eine Annotation anbieten. Objects.equals macht den Quellcode lesbarer, als X-mal den Ausdruck: (a == b) || (a != null && a.equals(b)) einzufügen.
 

Oneixee5

Top Contributor
Wie ich das sehe sind die Enum/Allergene immer in der Liste vorhanden, da Item#getAllergenes() ja immer eine LinkedList<Allergen> zurückgibt.

Java:
    public LinkedList<Item> filterStorage() {

        LinkedList<Item> newItems = new LinkedList<Item>();

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

            //Hier muss überprüft werden, ob die Allergene aus dem Enum
            // "Allergen" in der Liste vorhanden sind, wenn ja sollen diese
            //in "newItems" kopiert werden.

            newItems.add(items.get(i));



        }
        return newItems;

    }

Die einzige Möglichkeit wäre, dass die Liste null oder empty ist, ansonsten müssen da immer Allergene drin sein.
Java:
List<?> list = items.get(i).getAllergenes();
if (list != null && !list.isEmpty()) {
    // list contains Allergenes
}
 

mrBrown

Super-Moderator
Mitarbeiter
Eine NPE ist eine EntwicklerZuBlödException, dass hat nichts mit Fehlersuche zu tun. Für die Fehlersuche würde sich z.B.: Objects.requireNonNull(String obj, String message), eine Assertition oder eine Annotation anbieten.
Mein "Fehler finden" ist eher als ein "Fehler anzeigen, damit man merkt, dass an anderer Stelle ein Fehler gemacht wurde"

Es kann ja nur zwei Fälle geben: 1) die Liste kann fachlich null enthalten, oder 2) sie kann es nicht (und null in der Liste wäre ein Fehler)

In Fall 1 würde ich das explizit machen, mit Objects.equals rätseln man sonst beim Lesen nur, ob es nur einfach so "um auf Nummer sicher zu gehen" ist, oder weil es fachlich nötig ist (und wenn ja, ob es fachlich an der Stelle auch nötig ist, dass null==null).

Und in Fall 2 würde ich dort explizit keinen Check machen, ein zusätzlicher Check würde den Fehler (der an anderer Stelle gemacht wurde) nur noch weiter verschleiern, und "Mehraufwand", der das Entdecken von Fehlern schwieriger macht, klingt nicht wirklich sinnvoll.
Klar, kann man dort dann auch mit Objects.requireNonNull machen, der Unterscheid ist aber marginal und bläht den Code unnötig auf

Objects.equals macht den Quellcode lesbarer, als X-mal den Ausdruck: (a == b) || (a != null && a.equals(b)) einzufügen.
Expliziter >> lesbarer ;)
 

Midazolam

Mitglied
Die einzige Möglichkeit wäre, dass die Liste null oder empty ist, ansonsten müssen da immer Allergene drin sein.
Aber nicht ausschließlich eigentlich? Ich hatte schon den Fall das alle Eingaben die der Public Test macht in die neue Liste kopiert wurden, das waren 5 glaub ich, es sollen aber wohl nur 2 sein

Java:
1) testStorageManagerFilterStorage(PublicTests)
java.lang.AssertionError: expected:<[Food@ba4d54, Food@12bc6874]> but was:<[]>
    at org.junit.Assert.fail(Assert.java:88)
    at org.junit.Assert.failNotEquals(Assert.java:834)
    at org.junit.Assert.assertEquals(Assert.java:118)
    at org.junit.Assert.assertEquals(Assert.java:144)
    at PublicTests.testStorageManagerFilterStorage(PublicTests.java:183)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runners.Suite.runChild(Suite.java:128)
    at org.junit.runners.Suite.runChild(Suite.java:27)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
    at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
    at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
 

Oneixee5

Top Contributor
Ich hatte schon den Fall das alle Eingaben die der Public Test macht in die neue Liste kopiert wurden, das waren 5 glaub ich, es sollen aber wohl nur 2 sein
Wenn in der Liste immer 2 Elemente sein sollen, dann ist eine Liste möglicherweise der falsche Objekttyp. Eine Datenstruktur fester Länge wäre z.B.: ein Array.
Dein AssertionError sagt außerdem, dass eine leere Collection gefunden wurde.
 

Midazolam

Mitglied
Es sollen nicht immer 2 Elemente sein. Es geht ja darum aus der Liste "items" die Item rauszufiltern, die Allergene sind, diese sollen dann in eine neue Liste kopiert werden. Der Public Test gibt der Liste in dem Fall wie gesagt 5 Items, wovon zwei dann Allergene sind. Ich kriege es nur nicht hin, diese zwei Allergene rauszufiltern.
 

Oneixee5

Top Contributor
Es sollen nicht immer 2 Elemente sein. Es geht ja darum aus der Liste "items" die Item rauszufiltern, die Allergene sind, diese sollen dann in eine neue Liste kopiert werden. Der Public Test gibt der Liste in dem Fall wie gesagt 5 Items, wovon zwei dann Allergene sind. Ich kriege es nur nicht hin, diese zwei Allergene rauszufiltern.
Noch mal:
Java:
public enum Allergen {

    NUTS, PEANUTS, SOYBEANS, GLUTEN, FISH, MILK, EGGS;

}

private LinkedList<Allergen> allergenes = new LinkedList<Allergen>();
In deiner Liste sind immer nur Allergene - nicht anderes - das stellt der Compiler sicher.
 

Oneixee5

Top Contributor
Das habe ich doch oben schon geschrieben.
Java:
abstract class Item implements ItemInfo {

    private double price;
    private int ID;
    private LinkedList<Allergen> allergenes = new LinkedList<Allergen>();
    
    ...
}

allergenes - kann null oder leer sein.
Java:
List<Allergenes> list = items.get(i).getAllergenes();
if (list != null && !list.isEmpty()) {
    // list contains Allergenes
}
 

Midazolam

Mitglied
Nevermind getAllergenes()funktioniert jetzt.

Java:
public LinkedList<Allergen> filterStorage(Allergen ALLERGEN) {

        LinkedList<Allergen> list = new LinkedList<Allergen>();

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

            list = items.get(i).getAllergenes();

            if ((list != null) && !list.isEmpty()) {

                list.add(ALLERGEN);
            }
        } return list;

    }

Jetzt habe ich schonmal wenigstens etwas in der neuen Liste, aber noch nicht das richtige:
Java:
There was 1 failure:
1) testStorageManagerFilterStorage(PublicTests)
java.lang.AssertionError: expected:<[Food@ba4d54, Food@12bc6874]> but was:<[FISH, SOYBEANS, EGGS, GLUTEN]>

Ich muss ALLERGEN ersetzten und sowie es aussieht mit einer Liste(?), nur das wie erschließt sich mir wieder nicht
 

Midazolam

Mitglied
Das ist wie der Public test vorgeht, vielleicht bringt das noch was. mir erschließt sich daraus nicht wirklich viel
Java:
@Test
        public void testStorageManagerFilterStorage() {
            Item bread = new Food();
            bread.getAllergenes().add(Allergen.GLUTEN);
            Item nutella = new Food();
            nutella.getAllergenes().add(Allergen.NUTS);
            nutella.getAllergenes().add(Allergen.PEANUTS);
            nutella.getAllergenes().add(Allergen.GLUTEN);
            Item kuhmilch = new Beverage();
            kuhmilch.getAllergenes().add(Allergen.MILK);
            Item tuna = new Food();
            tuna.getAllergenes().add(Allergen.FISH);
            tuna.getAllergenes().add(Allergen.SOYBEANS);
            Item catfood = new Food();
            catfood.getAllergenes().add(Allergen.FISH);
            catfood.getAllergenes().add(Allergen.SOYBEANS);
            catfood.getAllergenes().add(Allergen.EGGS);
            
            StorageManager s = new StorageManager();
            s.buyNewItem(bread);
            s.buyNewItem(nutella);
            s.buyNewItem(kuhmilch);
            s.buyNewItem(tuna);
            s.buyNewItem(catfood);
            
            LinkedList<Item> gluten = new LinkedList<Item>();
            gluten.add(bread);
            gluten.add(nutella);
            
            LinkedList<Item> nuts = new LinkedList<Item>();
            nuts.add(nutella);
            
            LinkedList<Item> peanuts = new LinkedList<Item>();
            peanuts.add(nutella);
            
            LinkedList<Item> milk = new LinkedList<Item>();
            milk.add(kuhmilch);
            
            LinkedList<Item> fish = new LinkedList<Item>();
            fish.add(tuna);
            fish.add(catfood);
            
            LinkedList<Item> soybeans = new LinkedList<Item>();
            soybeans.add(tuna);
            soybeans.add(catfood);
            
            LinkedList<Item> eggs = new LinkedList<Item>();
            eggs.add(catfood);
            
            assertEquals(gluten, s.filterStorage(Allergen.GLUTEN));
            assertEquals(nuts, s.filterStorage(Allergen.NUTS));
            assertEquals(peanuts, s.filterStorage(Allergen.PEANUTS));
            assertEquals(milk, s.filterStorage(Allergen.MILK));
            assertEquals(fish, s.filterStorage(Allergen.FISH));
            assertEquals(soybeans, s.filterStorage(Allergen.SOYBEANS));
            assertEquals(eggs, s.filterStorage(Allergen.EGGS));   
        }
 

temi

Top Contributor
Keine Ahnung, was das werden soll, aber so wie es aussieht vergleicht dein "asserEquals" eine Liste von Items mit einer Liste von Allergenen. Wie soll das jemals gleich sein? Das ist der Vergleich von Äpfeln mit Birnen.

BTW: Um Objekte mit equals() zu vergleichen, müssen sie natürlich equals() überschreiben. Sonst wird die von Object geerbte equals()-Methode verwendet und die macht vermutlich nicht, was du möchtest. Wie du auch an deiner Ausgabe erkennen kannst, werden da nur die Hashwerte (auch die Standard-Implementierung von Object) verglichen. Als generelle Regel gilt. Wer equals() überschreibt sollte auch hashCode() überschreiben.

Zum Implementierung von equals() gibt es Regeln: https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object)

Hier ein einfaches Beispiel. Als Kriterium für die Identität wird hier die Instanzvariable type verwendet. Das ist aber allein deine Entscheidung, was genau die Identität deiner Objekte ausmacht. Sowohl hashCode() als auch equals() wurden von meiner IDE automatisch erzeugt.
Java:
public class Auto {
    private String type;

    public Auto(String type) {
        this.type = type;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Auto auto = (Auto) o;

        return type != null ? type.equals(auto.type) : auto.type == null;
    }

    @Override
    public int hashCode() {
        return type != null ? type.hashCode() : 0;
    }

    public static void main(String[] args) {
        Auto audi = new Auto("Audi");
        Auto opel = new Auto("Opel");
        Auto nochEinAudi = new Auto("Audi");

        System.out.println(audi.equals(opel));
        System.out.println(audi.equals(nochEinAudi));
    }
}
 
Zuletzt bearbeitet:

Midazolam

Mitglied
Also der Public Test ist nicht von mir, der ist von der Uni. Dachte nur, dass der vielleicht noch einen Anhaltspunkt liefern könnte. Soweit funktioniert die Methode, nur nicht so wie sie soll. ALLERGEN muss ich ersetzten, wie gesagt, ich weiß nur nicht wodurch.
 

temi

Top Contributor
Java:
assertEquals(gluten, s.filterStorage(Allergen.GLUTEN));

"gluten" ist eine Liste von Items (die Gluten enthalten). Die soll verglichen werden (und gleich sein) mit dem Ergebnis von s.filterStorage(Allergen.GLUTEN) . Das muss also ebenfalls eine Liste von Items sein (die Gluten enthalten).

Deine Methode filterStorage() liefert allerdings eine Liste von Allergenen zurück.
 
Zuletzt bearbeitet:

Midazolam

Mitglied
Das hatte ich vorher, dass die Methode eine Liste von Items zurück gibt (LinkedList<Item>), dann bekomme ich aber bei getAllergenes(): Type mismatch: cannot convert from LinkedList<Allergen> to LinkedList<Item>, was mir noch logisch erscheint.

Aktuell bin ich bei diesem Stand:
Java:
public LinkedList<Item> filterStorage(Allergen ALLERGEN) {

        LinkedList<Item> list = new LinkedList<Item>();

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

            list.add(items.get(i));

            //filter? "if" Bedingung? Was anderes?
            
            

        } return list;

    }

Damit bekomme ich diese Ergebnis, sieht eigentlich ja so aus, als wäre ich auf dem richtigen Pfad, nur wie oben im Kommentar angemerkt, fehlt mir noch die richtige Bedingung und was dann ausgeführt werden soll. Es fehlt noch der Filter.

Java:
1) testStorageManagerFilterStorage(PublicTests)
java.lang.AssertionError: expected:<[Food@ba4d54, Food@12bc6874]> but was:<[Food@ba4d54, Food@12bc6874, Beverage@de0a01f, Food@4c75cab9, Food@1ef7fe8e]>
 

temi

Top Contributor
Damit bekomme ich diese Ergebnis, sieht eigentlich ja so aus, als wäre ich auf dem richtigen Pfad
Überschreib doch mal die Methode toString() von Food und lass dir dort einen sinnvollen Text zurück geben, z. B. den Namen des Lebensmittels.

EDIT: Ich sehe grade, dass es anscheinend kein sinnvolles Feld gibt, das man da verwenden könnte. Also vergiss das erst mal.

Dann lässt sich das Ergebnis des fehlgeschlagenen Tests vermutlich viel besser lesen.

Und die Bedingung ist doch klar, du sollst alle in dem StoreManager enthaltenen Lebensmittel, die das als Parameter übergebenen Allergen enthalten, zurück geben.

Du musst also durch alle Items gehen und z. B. mit contains() prüfen, ob es in dessen Allergenliste enthalten ist.

https://docs.oracle.com/javase/8/docs/api/java/util/List.html#contains-java.lang.Object-
 

Midazolam

Mitglied
Ich meinte nur, dass mir die Bedingung in Codeform überhaupt nicht klar ist. Das ist der Stand und das müsste für mein Verständnis doch klappen, tut es aber nicht. Oder ist ALLERGEN in diesem Fall nur ein Element aus dem Enum Allergen und nicht alle?

Für mein Verständnis würde die if Bedingung hier das Element an Stelle i mit dem Enum vergleichen und dieses Element dann in list hinzufügen, wenn es true ist?

Java:
public LinkedList<Item> filterStorage(Allergen ALLERGEN) {

        LinkedList<Item> list = new LinkedList<Item>();

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

            if (items.get(i).equals(ALLERGEN)) {

                list.add(items.get(i));
                
            }

        } return list;

    }
 

temi

Top Contributor
"items" ist eine Liste von Items, demnach liefert dir items.get(i) ein einzelnes Item. Du versuchst ein Item mit einem Allergen zu vergleichen. Das sind wieder Äpfel und Birnen.

Du möchtest für jedes Item, dessen Liste von Allergenen prüfen, ob das bestimmte Allergen darin enthalten ist.

Ich meinte nur, dass mir die Bedingung in Codeform überhaupt nicht klar ist.
Dann versuche die Bedingung, bzw. den Algorithmus erst mal ohne Code ganz einfach in Worte zu fassen: "Für jedes Item in der Liste.."
Wenn das gut gemacht ist, dann kannst du es 1:1 in Code übersetzen.
 

temi

Top Contributor
Ich würde dir auch die for-each-Schleife (bzw. enhanced for-Loop) ans Herz legen. Damit iterierst du über alle in der Liste enthaltenen Elemente:
Java:
public LinkedList<Item> filterStorage(Allergen allergen) {
    LinkedList<Item> result = new LinkedList<Item>();
    for (Item item : items) {
        // mach was mit dem item
    }
    return result;
}
 
Zuletzt bearbeitet:

Midazolam

Mitglied
Du möchtest für jedes Item, dessen Liste von Allergenen prüfen, ob das bestimmte Allergen darin enthalten ist.

Das hat die Lösung gebracht :D Danke
Auch wenn es nicht so gedacht war, funktioniert. getAllergenes() hatte ich gar nicht mehr auf dem Schirm weil es bei meinen vorherigen Versuchen immer zu irgendwelchen Errors geführt hat.


Java:
public LinkedList<Item> filterStorage(Allergen ALLERGEN) {

        LinkedList<Item> list = new LinkedList<Item>();

        for (Item item : items) {

            if (item.getAllergenes().contains(ALLERGEN)) {

                list.add(item);
            }
        } return list;


    }
 

temi

Top Contributor
Noch ein Hinweis: Methoden- und Variablennamen (und da gehören auch die Namen von Parametern dazu) beginnen in Java mit einem Kleinbuchstaben. Sog. lowerCamelCase.

Komplett groß werden i.d.R. nur Konstanten geschrieben. Evtl. auch noch die Werte einer Enumeration.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Knoten an einem gegebenen Index aus einer Liste entfernen. Java Basics - Anfänger-Themen 6
M Index einer JList ausgeben Java Basics - Anfänger-Themen 4
I Letzter Index einer Liste Java Basics - Anfänger-Themen 8
DStrohma Index einer markierten Zeile aus einer JList bekommen? Java Basics - Anfänger-Themen 5
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
_so_far_away_ Fehlermeldung "Index 2 out of bounds for length 2" Java Basics - Anfänger-Themen 7
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
P9cman Char Index rekursiv finden Java Basics - Anfänger-Themen 4
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
M Ersten Index von Array bestimmen Java Basics - Anfänger-Themen 14
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
H For-Schleife bis Index von Eingabe laufen lassen Java Basics - Anfänger-Themen 24
G Methoden Methode die aus einem Array ein Index ausgibt? Java Basics - Anfänger-Themen 2
Baktash Index 0 out of bounds for length 0 Java Basics - Anfänger-Themen 5
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
JD_1998 Vektorrechner; User Input -> Index out of bounds Java Basics - Anfänger-Themen 3
H Bei forEach Index des Elements ermitteln Java Basics - Anfänger-Themen 17
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
S String index out of range Java Basics - Anfänger-Themen 11
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
J Apache Poi - createCell() Methode akzeptiert keinen Index aus for-schleife als Parameter Java Basics - Anfänger-Themen 4
J Fehler in Programm: Index -1 out of bounds for length 0 Java Basics - Anfänger-Themen 5
M Index of Array erweiteren Java Basics - Anfänger-Themen 24
R String index out of range: -1 beim Datei Parsen Java Basics - Anfänger-Themen 15
L gerader Index im Array Java Basics - Anfänger-Themen 8
A ArrayList - size() nur nach bestimmtem index anzeigen lassen Java Basics - Anfänger-Themen 13
P String index out of range Java Basics - Anfänger-Themen 12
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
M Index out of range Java Basics - Anfänger-Themen 10
I String index out of range Fehlermeldung Java Basics - Anfänger-Themen 4
D " Column Index out of range, 6 > 5." Java Basics - Anfänger-Themen 8
S Index File bauen Java Basics - Anfänger-Themen 5
Z Array-Index einmalig je mit Random füllen Java Basics - Anfänger-Themen 7
Hacer remove at index Java Basics - Anfänger-Themen 31
M Kleinsten Index in Array finden Java Basics - Anfänger-Themen 6
S kleinster Index der größten Komponente ? Java Basics - Anfänger-Themen 3
K Element in ArrayList löschen ohne Index zu verschieben Java Basics - Anfänger-Themen 2
Z Erste Schritte String index out of range Java Basics - Anfänger-Themen 2
F Freier Index im Stringarray Java Basics - Anfänger-Themen 3
V Attribut aus aus jedem ArrayListen index auf Bildschirm ausgeben Java Basics - Anfänger-Themen 9
B Index out of bound exception. Warum? Java Basics - Anfänger-Themen 3
S string index out of range - es ergibt keinen Sinn Java Basics - Anfänger-Themen 6
E Arrayeintrag nach Index löschen und Array kürzen Java Basics - Anfänger-Themen 3
Ö Frage zu String index out of range: -1 Java Basics - Anfänger-Themen 12
T Index-Abfrage von Pi Java Basics - Anfänger-Themen 5
S Array - index von Benutzer eingegebenen char ausgeben Java Basics - Anfänger-Themen 3
X LinkedList - Index eines Objekts Java Basics - Anfänger-Themen 2
S Substring - String index out of range Java Basics - Anfänger-Themen 11
U buttonarray[this] anstatt buttonarray[index] ? Java Basics - Anfänger-Themen 12
D Annonyme Innere Klasse: Listen mit geradem Index ausgeben Java Basics - Anfänger-Themen 6
MiMa Array mit ungültigen Index ansprechen Java Basics - Anfänger-Themen 2
V Methoden Verkettete Listen Index eines Elementes ausgeben Java Basics - Anfänger-Themen 10
F Fehler bei Array und Index Programmierung Java Basics - Anfänger-Themen 18
T Erste Schritte Java ein Array Feld[index] zurueckgeben? Java Basics - Anfänger-Themen 20
Luk10 Index bei 2 verschachtelten Schleifen Java Basics - Anfänger-Themen 2
C Klassen BubbleSort was passiert mit dem Index ? Java Basics - Anfänger-Themen 2
S String index out of range: 8 at java.lang.String.substring(Unknown Source) Java Basics - Anfänger-Themen 13
E Array bei Index ändern Java Basics - Anfänger-Themen 14
O Index Ermittlung Java Basics - Anfänger-Themen 20
C Felder(Größte Zahl, Index) Java Basics - Anfänger-Themen 6
M kurze frage: Ohne index.of position von string angeben Java Basics - Anfänger-Themen 16
G Collections Liste mit festem Index Java Basics - Anfänger-Themen 16
R ArrayList(int index, Object) funktioniert nicht korrekt? Java Basics - Anfänger-Themen 7
H "Index" eines Button ermitteln Java Basics - Anfänger-Themen 7
K Fehlermeldung: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 Java Basics - Anfänger-Themen 4
A dynamisches Array - Index Liste Java Basics - Anfänger-Themen 2
X Array Index Out of Bounds Java Basics - Anfänger-Themen 39
S Array bei index halbe umdrehen ohne hilfsfeld Java Basics - Anfänger-Themen 13
H String index out of range: 0 Java Basics - Anfänger-Themen 4
M index.html fehlt Java Basics - Anfänger-Themen 12
StupidAttack Fehler: String index out of range:7 Java Basics - Anfänger-Themen 10
C Datentypen ArrayList.remove(index) hinterlässt leeres Feld Java Basics - Anfänger-Themen 5
A Datentypen Nächsten freien index eines arrays finden Java Basics - Anfänger-Themen 5
S Enum als Index Java Basics - Anfänger-Themen 5
M JList Index selektieren ausschalten. Java Basics - Anfänger-Themen 7
S Sortierte LinkedList nach Variablen durchsuchen und nicht nach INDEX Java Basics - Anfänger-Themen 6
S Fehlermeldung String index out of range?? Java Basics - Anfänger-Themen 3
J arraylist Index des größten, zweit-,dritt-,...-größten Elemtens ausgeben Java Basics - Anfänger-Themen 8
B Array mit Index 1 starten lassen Java Basics - Anfänger-Themen 5
E Höherer Index als Size in ArrayList Java Basics - Anfänger-Themen 9
S Verschiedene Arrays über Index aufrufen Java Basics - Anfänger-Themen 5
M index of bei LinkedList Java Basics - Anfänger-Themen 6
K itemlistener item index herausfinden Java Basics - Anfänger-Themen 4
P Array index per char suche auslesen Java Basics - Anfänger-Themen 3
J Array-Index nur als Integer möglich? Java Basics - Anfänger-Themen 15
H RemoteSocketAddress als Index von einem Array Java Basics - Anfänger-Themen 10
G Char erzeugen wenn Index bekannt! Java Basics - Anfänger-Themen 2
H wie spreche ich durch leerzeichen im string neuen index an Java Basics - Anfänger-Themen 10
F Arrays sortieren -> Index merken Java Basics - Anfänger-Themen 10
J Speichern des index Java Basics - Anfänger-Themen 3
J Array - Index ermitteln per Wert Java Basics - Anfänger-Themen 3
J Wie installiere ich die api index.html in meinen java editor Java Basics - Anfänger-Themen 4
E Array Index out of Bound Java Basics - Anfänger-Themen 5
E array index an methode übergeben? Java Basics - Anfänger-Themen 6
J enum Index Zugriff Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben