我有一个包含数值的列表:
1
1
1
2
2
2
我想要前2的索引,我使用List.indexOf(“2”)但它返回-1
是什么原因?
答案 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