Java list.indexOf(数值)返回-1

Java list.indexOf(数值)返回-1,java,Java,我有一个包含如下数值的列表: 1 1 1 2 2 2 我希望有前2个索引,我使用List.indexOf(“2”),但它返回-1 原因是什么 如果您的列表存储数字,则会收到-1,因为您将字符串传递到indexOf方法中 List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.indexOf("1");//returns -1 list.indexOf(1);//re

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

1
1
1
2
2
2  
我希望有前2个索引,我使用List.indexOf(“2”),但它返回-1

原因是什么

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

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

list.indexOf("1");//returns -1
list.indexOf(1);//returns 0
List List=new ArrayList();
增加第(1)款;
增加(2);
列表。索引(“1”)//返回-1
列表.索引f(1)//返回0

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

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

尝试使用
List.indexOf(2)而不是
List.indexOf(“2”)


因为,您的问题是,您的
列表
对象中有数字数据,所以必须将参数作为数字而不是
字符串
传递。除非您以
字符串的形式存储数据,否则您将收到
-1

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


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

您正在以字符串形式搜索2。当您将2作为“2”传递时,请尝试
List.indexOf(2)
。它被认为是一个字符串。 若你们想从列表中获取数据,你们需要传递类似list.indexOf(新整数(2));
或List.indexOf(新整数(任意数))

正如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