4

私は物事のリストが欲しいので、リストをテストしてアイテムが存在するかどうかを確認したいと思います:

これが私のスニペットの例です:

    String[] handToolArray = {"pliers", "screwdriver", "tape measure"}; 
    List<String> handToolList = new ArrayList<String>( Arrays.asList(handToolArray));

    if (handToolList.contains("pliers")){
        System.out.println("I have pliers");
    } else {
        System.out.println("I don't have pliers");
    }

2 行目の Arrays.asList(handToolArray) は次を生成します。

"Type safety: The expression of type List needs unchecked conversion to conform to Collection<? extends String>"

質問:リストを作成してからクエリを実行するより良い方法はありますか?

4

3 に答える 3

5

配列を明示的に構築しなくても実行できます (配列は引き続き varargs によって使用されます)。

List<String> handToolList = Arrays.asList("pliers", "screwdriver", "tape measure");
于 2010-09-21T23:38:47.683 に答える
0

List インターフェイスがメソッドを定義していることに注意してくださいindexOf()。これを使用して、何かが存在するかどうかを確認できます。

List<String> list = Arrays.asList(handTools);
if(list.indexOf("pliers!") != -1) {
  System.out.println("We have pliers.");
}
else {
  System.out.println("We do not have any pliers.");
}
于 2010-09-21T23:54:00.817 に答える
0

まず第一に、タイプ セーフの警告は表示されません。どの Java コンパイラを使用していますか?

Arrays.asList はすでに ArrayList (元の配列に基づく) を作成しているため、コピーが必要ない場合は、単に行うことができます

 List<String> handToolList =  Arrays.asList(handToolArray);

また、Apache Commons Lang ArrayUtils のようなものには、要素が配列に存在するかどうかを直接チェックする関数があることに注意してください。

if (ArrayUtils.exists(handToolArray , "pliers"))
于 2010-09-21T23:39:16.823 に答える