Arrays.asList (arr) .indexOf не работает - PullRequest
1 голос
/ 05 мая 2020

Рассмотрим следующий фрагмент

 int key1 = Arrays.asList(new int[]{1,2,3,4,5}).indexOf(5) ;//wrapper 
 int key2 = new ArrayList<>(Arrays.asList(new int[]{1,2,3,4,5})).indexOf(5); //another copy        

Но этот фрагмент оценивается как -1 -1, что означает, что он не нашел ключ 5 в списке. Но почему Arrays.aslist не находит ключ в списке. Может ли кто-нибудь объяснить или быстро исправить код для ключа поиска в массиве без явной реализации logi c. Конечно, мы можем отсортировать его и использовать Arrays.binarySearch. Любые другие предложения или любые другие способы сделать это.

1 Ответ

1 голос
/ 05 мая 2020

Проблема заключается в типе массива, который вы создаете внутри asList(). Учитывая, что для типов списков требуются непримитивные типы, вам необходимо объявить int как Integer. Если вы измените свой код на:

Arrays.asList(new Integer[]{1,2,3,4,5}).indexOf(5);

, он будет работать.

...