检查自定义类列表中是不是存在变量[重复]
Posted
技术标签:
【中文标题】检查自定义类列表中是不是存在变量[重复]【英文标题】:Checking if a variable exist in a List of custom class [duplicate]检查自定义类列表中是否存在变量[重复] 【发布时间】:2020-07-02 15:02:39 【问题描述】:我有一个我创建的自定义类对象的列表。
private List<Grocery> groceryList;
其中Grocery
类有name
、price
、quantity
变量和吸气剂...
我想检查一个杂货产品是否已经存在于我的列表中,如果不存在我想将它添加到我的列表中,这是我的代码:
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】:Grocery
和CheckOut
是完全不同的对象,您实际上无法使用equals
或contains
比较两种不同类型的对象。如果您的 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
是您要结帐的项目的名称,getItemName
是class Grocery
中itemName
的getter。
【讨论】:
以上是关于检查自定义类列表中是不是存在变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Django:如何检查自定义小部件定义中是不是存在字段错误?