检查自定义类列表中是不是存在变量[重复]

Posted

技术标签:

【中文标题】检查自定义类列表中是不是存在变量[重复]【英文标题】:Checking if a variable exist in a List of custom class [duplicate]检查自定义类列表中是否存在变量[重复] 【发布时间】:2020-07-02 15:02:39 【问题描述】:

我有一个我创建的自定义类对象的列表。


private List<Grocery> groceryList;

其中Grocery 类有namepricequantity 变量和吸气剂... 我想检查一个杂货产品是否已经存在于我的列表中,如果不存在我想将它添加到我的列表中,这是我的代码:

CheckOut hisCheckOut = new CheckOut(itemName ,String.valueOf(price), String.valueOf(orderQuantity), String.valueOf(itemTotalPrice));


    if(!(GroceryActivity.list.contains(itemName)))
        GroceryActivity.list.add(hisCheckOut);
        GroceryActivity.totalItemsPrice += itemTotalPrice;
    

itemName 是一个具有普通字符串名称的变量 .这不起作用。

【问题讨论】:

【参考方案1】:

GroceryCheckOut 是完全不同的对象,您实际上无法使用equalscontains 比较两种不同类型的对象。如果您的 CheckOut 类比 Grocery 对象拥有更多的项目,那么我建议将 Grocery 对象本身作为属性添加到 CheckOut 对象,以便您可以使用比较方法。

因此CheckOut 类可能如下所示。

public class CheckOut 
    public long checkOutTime; 
    // ... other extra attributes can go here

    // Add the Grocery object as an attribute
    public Grocery groceryItem; 

现在创建CheckOut 对象时,您基本上是在其中创建了一个杂货项目,现在您可以与GroceryActivity 中的项目列表进行比较。

boolean itemAdded = false;
for (CheckOut checkout : GroceryActivity.list) 
    if (checkout.groceryItem.getName().equals(itemName) 
        // Already added to the checkout
        itemAdded = true;
        break;
    


if (!itemAdded) 
    GroceryActivity.list.add(hisCheckOut);
    GroceryActivity.totalItemsPrice += itemTotalPrice;

希望对你有帮助!

【讨论】:

【参考方案2】:

您的代码不起作用,因为您正在检查 itemName 和项目本身。

按如下方式进行:

boolean found=false;
for(Grocery g: GroceryActivity.list)
    if(g.getItemName().equals(itemName))
        found=true;
        break;
    

if(!found)
    //...do whatever you want to do

其中itemName 是您要结帐的项目的名称,getItemNameclass GroceryitemName 的getter。

【讨论】:

以上是关于检查自定义类列表中是不是存在变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Django:如何检查自定义小部件定义中是不是存在字段错误?

可以使用 std::unique 来确定自定义类的对象是不是具有相同的值吗?

为啥需要自定义异常类[重复]

自定义类加载器

在asp.net的自定义类(C#)中怎样把变量输出到页面?

过滤数组列表或列表中的自定义对象[重复]