次のような数値を含むリストが 1 つあります。
1
1
1
2
2
2
最初の 2 のインデックスを取得したいのですが、List.indexOf("2") を使用しますが、-1 を返し
ます。その理由は何ですか?
次のような数値を含むリストが 1 つあります。
1
1
1
2
2
2
最初の 2 のインデックスを取得したいのですが、List.indexOf("2") を使用しますが、-1 を返し
ます。その理由は何ですか?
-1 は、検索された値がリストに含まれていないことを意味します。
リストの内容は本当に文字列ですか?
リストに数値が格納されている場合は、文字列を indexOf メソッドに渡すため、-1 を受け取ります。
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.indexOf("1");//returns -1
list.indexOf(1);//returns 0
内部で比較を行うと、indexOf
型を考慮した等価性がチェックされます。
「2」は文字列ですが、リストには整数が含まれています。試すList.indexOf(new Integer(2));
List.indexOf(2);
の代わりに使用してみてくださいList.indexOf("2");
あなたの質問は、List
オブジェクトに数値データがあると言っているので、引数を の代わりに数値として渡す必要がありますString
。の形式でデータを保存していない限り、結果としてString
受け取ります。-1
2 を文字列として検索しています。試すList.indexOf(2)
Katja が言うように、おそらく List で間違った型 (String) を探しているのでしょう (これは List of Integerだと思います)。
以下の例を参照してください。
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
System.out.println(list.indexOf("1"));
System.out.println(list.indexOf(1));
出力:
-1
0
2を「2」として渡すと。文字列と見なされます。リストからデータをフェッチする場合は、List.indexOf(new Integer(2)); のように渡します。または List.indexOf(new Integer(任意の数値));