У меня есть один список, содержащие числовое значение, как это:list.indexOf (численное значение) возвращает -1
1
1
1
2
2
2
Я хочу иметь индекс первых 2, я использую List.indexOf («2») но он возвращает -1
в чем причина?
У меня есть один список, содержащие числовое значение, как это:list.indexOf (численное значение) возвращает -1
1
1
1
2
2
2
Я хочу иметь индекс первых 2, я использую List.indexOf («2») но он возвращает -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));
Попробуйте использовать List.indexOf(2);
вместо List.indexOf("2");
Так, ваш вопрос говорит, что у вас есть числовые данные в вашем List
объекта, вы должны передать аргумент как число вместо String
. Если вы не храните свои данные в форме String
, вы получите -1
.
-1 означает, что искомое значение не содержится в вашем списке.
- это содержимое списка действительно строк?
Вы ищете 2 как строку. Попробуйте List.indexOf(2)
Как вы проходите 2 как «2». он рассматривается как строка. Если вы хотите получать данные из списка, вы проходите как List.indexOf (new Integer (2)); или List.indexOf (новое целое число (любое число));
Как говорит Катя, вы, вероятно, ищете неправильный тип (String) в своем списке (я предполагаю, что это список 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