-3

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

1
1
1
2
2
2  

我想要第一个 2 的索引,我使用 List.indexOf("2") 但它返回 -1
是什么原因?

4

7 回答 7

1

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

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

于 2013-05-08T10:08:13.810 回答
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它会检查是否考虑了类型的相等性。

于 2013-05-08T10:06:27.817 回答
1

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

于 2013-05-08T10:06:44.753 回答
0

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

于 2013-05-08T10:08:47.020 回答
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 作为字符串。尝试List.indexOf(2)

于 2013-05-08T10:08:17.600 回答
0

尝试使用List.indexOf(2);而不是List.indexOf("2");

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

于 2013-05-08T10:07:42.820 回答