1

我试图从同一个类中的另一个方法调用一个方法,以检查用户输入的内容是否在 arrayList 中。如果它在arrayList中,我想将它的数量加1。如果它不在arrayList中,我将它添加到arrayList中。这是我所拥有的:

public Item searchForItem(String n){
  for(int i = 0; i < s.size(); i++){   
    Item y = s.get(i);  
    if(y.getName().equals(name)){  
      return y;    
    } 
  }
  return null;
}
public void addItem(Item f) {  
  s.add(f);    
}

我知道我需要在addItem方法中使用 if 语句,但我不确定如何编写它。

有没有办法检查是否y已退回或是否null已退回?

4

3 回答 3

0

只需调用将名称作为参数传递的 searchForItem 方法。

public void addItem(Item f) {  
 if(searchForItem(f.getName())==null) {
  s.add(f);    // add's the item only if searchForItem returns null
}
}
于 2012-12-07T23:12:45.767 回答
0

使用 foreach 语法来编写更简单的代码,并尝试以下操作:

public Item searchForItem(String name){
  for(Item y : s) {   
    if(y.getName().equals(name)){  
      return y;    
    } 
  }
  s.add(new Item(name));
  return null;
}
于 2012-12-07T23:17:17.250 回答
0

使用哈希映射!它将具有 O(1) 访问时间,因此您不必迭代数组列表。使用 containsKey 方法检查元素是否在地图中,并使用 get 方法获取它。

于 2012-12-07T23:23:57.150 回答