检查ArrayList中包含的对象中是否存在某个字符串,然后将该对象添加到另一个ArrayList

时间:2014-03-01 04:06:29

标签: java arraylist contains

我有Arraylist个对象ArrayList<Product> productDatabase.该对象包含Stringdouble,然后这些对象将由addProductToDatabase();添加到productDatabase中如下:

public void addProductToDatabase(String productName, double dimensions); {
    Product newProduct = new Product(ProductName, dimensions);
    productDatabase.add(newProduct);
}

我还想制作一个Arraylist<ProductCount> productInventory来计算Product占多少ArrayList<ProductCount> productInventory。然而,在它可以添加到addProductToInventory()之前,它应该首先检查在运行public Product getProduct(String name) { for(i = 0; i < productDatabase.size(); i++) if(productDatabase.get(i).contains(name) //Error: cannot find symbol- method contains.(java.lang.String) return productDatabase.get(i) } public void addProductToInventory(String productName, double quantity) { Product p = getProduct(name); productCount.add(new ProductCount(o, quantity)); } 时产品数据库中是否存在对象详细信息

producttName

假设您总是拥有不同的对象(因此没有相同的名称),但您总是不确定尺寸(因此当您输入相同的getProductQuantityTotal() +尺寸时,您可以编辑其中的尺寸)

在一天结束时,您必须将所有项目放在一个大盒子中并报告您已清点的内容,因此您还需要getProductDimensionTotal()并且必须for - - 顾名思义,获取您计算的对象总数以及维度的总和。

我需要添加/更改/删除此代码?不要首先考虑语法(因为BlueJ检查常见的语法错误,我只是手动输入)。我确定我在某个地方遗漏了contains()声明,我可能会误导import java.util.*;,因为它无法识别它(我有import java.util.ArrayList;和{{1}} )

1 个答案:

答案 0 :(得分:0)

要回答帖子标题中的问题:如何在对象中找到字符串 ,对于这些对象的列表,下面是一些示例代码:

首先,我创建了一个具有字符串字段的简单对象:

class ObjectWithStringField  {
   private final String s;
   public ObjectWithStringField(String s)  {
      this.s = s;
   }
   public String getString()  {
      return  s;
   }
}

然后是填充其列表的代码,然后搜索每个字符串。这里没有魔力,它只是遍历列表直到找到匹配。

import  java.util.List;
import  java.util.Arrays;

/**
   <P>{@code java StringInObjectInList}</P>
 **/
public class StringInObjectInList  {
   public static final void main(String[] ignored)  {
      ObjectWithStringField[] owStrArr = new ObjectWithStringField[]  {
         new ObjectWithStringField("abc"),
         new ObjectWithStringField("def"),
         new ObjectWithStringField("ghi")};

      //Yes this is a List instead of an ArrayList, but you can easily 
      //change this to work with an ArrayList. I'll leave that to you  :)
      List<ObjectWithStringField> objWStrList = Arrays.asList(owStrArr);

      System.out.println("abc? " + doesStringInObjExistInList("abc", objWStrList));
      System.out.println("abcd? " + doesStringInObjExistInList("abcd", objWStrList));
   }
   private static final boolean doesStringInObjExistInList(String str_toFind, List<ObjectWithStringField> owStrList_toSearch)  {
      for(ObjectWithStringField owStr : owStrList_toSearch)  {
         if(owStr.getString().equals(str_toFind))  {
            return  true;
         }
      }
      return  false;
   }
}

输出:

[C:\java_code\]java StringInObjectInList
abc? true
abcd? false

在现实世界中,我使用List而不是Map<String,ObjectWithStringField>,其中该字段。然后它就像themap.containsKey("abc");一样简单。但是这里可以根据需要实施。你仍然需要做很多工作,按照你的任务的具体要求来完成这项工作,但它应该让你有一个良好的开端。祝你好运!