如何使用枚举过滤 LinkedList

How to filter a LinkedList with enums

我如何在枚举的帮助下过滤我的“StorageManager”在他名为“items”的 LinkedList 列表中的项目? 受此过滤器影响的项目需要复制到新的 LinkedList 中。我设法使用 buyNewItem() 将项目添加到存储管理器列表中,但需要帮助完成第二个任务。

如果我忘记添加一些重要信息,请告诉我。

编辑:唯一允许的导入是

导入java.util.Arrays;
导入 java.util.LinkedList;

编辑 2:我忘记了项目 Class 所以在这里

public 摘要 class 项目 {

private double price;
private int ID;
private LinkedList<Allergen> allergenes;


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

}

提前致谢! :)

public class StorageManager extends Employee {
    private LinkedList<Item>items;
        
    
    public LinkedList<Item> getItems() {
        return items;
    }

    public void setItems(LinkedList<Item> items) {
        this.items = items;
    }
    
    public boolean buyNewItem(Item item) {
        boolean IstDA = false;
        for ( Item item1 : items) {
            if(item1.equals(item)) {
                this.items.add(item);
                IstDA = true;
                break;
            }
        }if(IstDA == false) {
            System.out.println("Ist bereits im Warenkorb");
        }
    }
        
        
    
    
    public static LinkedList<Allergen> filterStorage(filter Allergen){
        if (this.items.contain(Allergen)){

我的枚举列表:

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

看起来你不能使用流,所以一个简单的 for 循环就可以了。 filterStorage 的签名看起来不对,所以我修改了它。

public LinkedList<Item> filterStorage(Allergen filter)
{
    LinkedList<Item> newList = new LinkedList<>();
    for (Item item1 : items) {
        if (item1.getAllergenes().contains(filter)) {
            newList.add(item1);
        }
    }
    return newList;
}