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