在Set中查找元素并添加到ArrayList

时间:2017-01-24 13:04:59

标签: java arraylist set

供参考: 类产品http://pastebin.com/LUWVzkNj
Class Shop http://pastebin.com/XLRwBfrQ
Class Cart http://pastebin.com/jqZcH4HK

我有一个Shop(Set)产品(itemNumber,Price),现在我想使用itemNumber搜索产品并将此产品添加到Cart(ArrayList)。为此,我必须创建一个名为find product的方法。我尝试但无法完成的事情:

  1. 使用for-loop尝试查找产品并将其添加到购物车(不确定==或等于是否正确):

    public void findProduct(int ItemNumber){
    for (Product item : item )
    {if (item.getItemNumber() == itemNumber)
    {add();}
    
  2. 遍历集合以查找产品

    public void findProduct(int itemNumber)
    {for(Iterator<Product> it = products.iterator(); it.hasNext();)
    {Product p = it.next(); 
    if (p.equals(new Product()))
    //add this product}}
    
  3. 检查set是否包含给定的itemNumber,然后添加此产品

    public void findProduct(int itemNumber)
    {if (products.contains(itemNumber))
    {//add this product; }}
    
  4. 如果您可以将Set中的元素添加到ArrayList中,或者如果您可以在集合列表中找到特定元素但是找不到任何特定的元素来帮助我,那么我试图谷歌。所以我想知道一旦我设法完成它们中的任何一个是否真的有效?

2 个答案:

答案 0 :(得分:1)

您的第一种方法同时又简单有效,但您需要更多控制:

public void findProduct(int ItemNumber){
   for (Product item : item ) {
      if (item.getItemNumber() == itemNumber){
         cart.add (item)
         break; //to leave the loop once it's found
   }

购物车是您的arrayList

答案 1 :(得分:1)

您的第一个版本是可能的。但是你的每个循环都不起作用:

public void findProduct(int itemNumber){
   for (Product item : shop) {
      if (item.getItemNumber() == itemNumber){
         cart.add(item)
         break;
   }

cart是您的列表,shop是您的设置。