-3

次のような数値を含むリストが 1 つあります。

1
1
1
2
2
2  

最初の 2 のインデックスを取得したいのですが、List.indexOf("2") を使用しますが、-1 を返し
ます。その理由は何ですか?

4

7 に答える 7

1

-1 は、検索された値がリストに含まれていないことを意味します。

リストの内容は本当に文字列ですか?

于 2013-05-08T10:08:13.810 に答える
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型を考慮した等価性がチェックされます。

于 2013-05-08T10:06:27.817 に答える
1

「2」は文字列ですが、リストには整数が含まれています。試すList.indexOf(new Integer(2));

于 2013-05-08T10:06:44.753 に答える
0

List.indexOf(2);の代わりに使用してみてくださいList.indexOf("2");

あなたの質問は、Listオブジェクトに数値データがあると言っているので、引数を の代わりに数値として渡す必要がありますString。の形式でデータを保存していない限り、結果としてString受け取ります。-1

于 2013-05-08T10:07:42.820 に答える
0

2 を文字列として検索しています。試すList.indexOf(2)

于 2013-05-08T10:08:17.600 に答える
0

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
于 2013-05-08T10:10:19.173 に答える
0

2を「2」として渡すと。文字列と見なされます。リストからデータをフェッチする場合は、List.indexOf(new Integer(2)); のように渡します。または List.indexOf(new Integer(任意の数値));

于 2013-05-08T10:08:47.020 に答える