list.indexOf(数值)返回-1

时间:2013-05-08 10:04:12

标签: java

我有一个包含数值的列表:

1
1
1
2
2
2  

我想要前2的索引,我使用List.indexOf(“2”)但它返回-1
是什么原因?

7 个答案:

答案 0 :(得分:1)

如果您的列表存储数字,则会收到-1,因为您将String传递给indexOf方法。

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);

list.indexOf("1");//returns -1
list.indexOf(1);//returns 0

indexOf内部进行比较时,它会检查是否考虑了类型的相等性。

答案 1 :(得分:1)

“2”是一个字符串,而你的List包含整数。试试List.indexOf(new Integer(2));

答案 2 :(得分:1)

-1表示搜索的值未包含在列表中。

列表中的内容真的是字符串吗?

答案 3 :(得分:0)

尝试使用List.indexOf(2);代替List.indexOf("2");

由于您的问题表明您的List对象中包含数字数据,因此您必须将参数作为数字而不是String传递。除非您以String的形式存储数据,否则您将收到-1作为结果。

答案 4 :(得分:0)

您正在搜索2作为字符串。试试List.indexOf(2)

答案 5 :(得分:0)

当您将2传递为“2”时。它被认为是一个字符串。 如果你想从列表中获取数据,你就像List.indexOf一样传递(new Integer(2)); 或List.indexOf(new Integer(Any number));

答案 6 :(得分:0)

正如Katja所说,你可能在列表中寻找错误的类型(字符串)(我假设它是整数的列表)。

见下面的例子:

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