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);    
}

メソッドにifステートメントが必要になることはわかっていますが、その記述addItem方法がわかりません。

yどちらかが返品されたかどうか、または返品されたかどうかを確認する方法はありnullますか?

4

3 に答える 3

0

HashMapを使用してください!配列リストを繰り返す必要がないように、O(1)アクセス時間があります。containsKeyメソッドを使用して要素がマップ内にあるかどうかを確認し、getメソッドを使用して要素を取得します。

于 2012-12-07T23:23:57.150 に答える
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

name を引数として渡して 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 に答える