You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何借助枚举过滤StorageManager中名为items的LinkedList列表元素

实现方案

默认实现逻辑为筛选出所有包含指定过敏原枚举值的Item,存入新的LinkedList返回,如果需要筛选不包含指定过敏原的条目,只需把判断条件取反即可。

首先确保你的Allergen枚举定义如下:

public enum Allergen {
    NUTS,PEANUTS,SOYBEANS,GLUTEN,FISH,MILK,EGGS;
}

过滤方法实现

直接替换你StorageManager类中未完成的filterStorage方法即可,所有依赖都在你允许的导入包范围内:

// 传入目标过敏原枚举值,返回所有符合条件的Item列表
public LinkedList<Item> filterStorage(Allergen targetAllergen){
    // 初始化存储结果的新列表
    LinkedList<Item> filteredItems = new LinkedList<>();
    // 遍历所有存储的Item
    for (Item item : this.items) {
        // 判断当前Item的过敏原列表是否包含目标过敏原
        if (item.getAllergenes().contains(targetAllergen)) {
            filteredItems.add(item);
        }
    }
    return filteredItems;
}

调用示例

// 示例:过滤出所有含麸质(GLUTEN)的商品
StorageManager storageManager = new StorageManager();
// 省略storageManager的初始化、商品添加逻辑
LinkedList<Item> glutenContainItems = storageManager.filterStorage(Allergen.GLUTEN);

可选:buyNewItem方法逻辑修正

你当前的buyNewItem逻辑是「列表中存在相同商品才添加,不存在就提示已在购物车」,逻辑是反的,如果你的需求是不存在相同商品才允许添加,可以调整为:

public boolean buyNewItem(Item item) {
    boolean isExist = false;
    for (Item item1 : items) {
        if(item1.equals(item)) {
            isExist = true;
            break;
        }
    }
    if(!isExist) {
        this.items.add(item);
        return true;
    } else {
        System.out.println("Ist bereits im Warenkorb");
        return false;
    }
}

内容的提问来源于stack exchange,提问作者user17543363

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:45:04