将元素添加到arraylist并测试该数字是否已存在

时间:2011-07-18 09:12:58

标签: java arraylist

我有一个方法可以将元素添加到arraylist中 我的任务是修改addProduct方法以便新产品 无法添加到具有相同ID的产品列表中 作为一个现有的。

由于数字和字符串都在同一个单词“item”中并存储在同一个索引中,我不知道如何才能获得该数字。我需要测试号码以查看号码是否已存在

关于我应该怎么做的任何建议?

我添加到arraylist的方式如下所示:

(new Product(132, "Clock Radio"))

public void addProduct(Product item)
{
 stock.add(item);
 }

5 个答案:

答案 0 :(得分:4)

我强烈建议您在addProduct()方法中使用Set

来自Javadocs,

  

SET
  不包含重复元素的集合。更正式的,集合   不包含元素e1和e2对,使得e1.equals(e2)和at   大多数一个null元素。

像这样实施,

public static boolean checkDuplicate(ArrayList list) {
 HashSet set = new HashSet();
 for (int i = 0; i < list.size(); i++) {
  boolean val = set.add(list.get(i));
  if (val == false) {
    return val;
  }
 }
 return true;
}

答案 1 :(得分:1)

public void addProduct(Product item){
   for (Product p: stock)
      if (p.getId() == item.getId())
         return;
   stock.add(item);
}

答案 2 :(得分:1)

我会使用java.util.Set。您需要根据传递给构造函数的两个字段实现Product类的equals()和hashcode()方法。

答案 3 :(得分:1)

尝试使用HashMap,其中ID为Key,Item为Value。在HashMap中,您无法使用相同的Key复制Items,因此您的问题将在编程的底部得到解决。 :)

答案 4 :(得分:0)

创建一个ProductList类,它具有一个ArrayList字段和一个整数集,用于跟踪已添加的ID。添加项目时,请检查该项目是否已包含项目的ID。如果没有,请将项添加到ArrayList。所以这基本上很好地包装了一个ArrayList。我就是这样做的:

public class ProductList{
...
    private ArrayList<Product> list = new ArrayList<Product>();
    private Set<Integer> ids = new Set<Integer>();
...
    public void addProduct(Product product){
       if(!ids.contains(product.getID())){
            list.add(product);
            ids.add(product.getID());
           }
         }

    public Product removeProduct(Product product){
       if(!list.contains(product)) return null;
       ids.remove(product.getID());
       return list.remove(product);
      }
...
    }

然后您可以使用

ProductList stock = new ProductList();

stock.addProduct(Product item);在您的其他课程中。

如果您认为您将广泛使用您的列表,那么创建实用的构造函数以与您的数据字段集成也将非常有用。

从抽象的角度来看,这是一个非常好的方法,但它可能不是最有效的方法。