我有一个包含如下数值的列表:
1
1
1
2
2
2
我想要第一个 2 的索引,我使用 List.indexOf("2") 但它返回 -1
是什么原因?
-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
它会检查是否考虑了类型的相等性。
“2”是一个字符串,而您的列表包含整数。尝试List.indexOf(new Integer(2));
当您将 2 传递为“2”时。它认为是一个字符串。如果你想从列表中获取数据,你已经通过了 List.indexOf(new Integer(2)); 或 List.indexOf(new Integer(Any number));
正如 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 作为字符串。尝试List.indexOf(2)
尝试使用List.indexOf(2);
而不是List.indexOf("2");
由于您的问题表明您的List
对象中有数字数据,因此您必须将参数作为数字而不是 a 传递String
。除非您以 的形式存储数据,否则您String
将收到-1
结果。