masz odpowiedź jak na to, co dzieje się na swojej tablicy podczas korzystania Arrays.asList()
.
Inne rzeczy do rozważenia:
- Ponieważ tablica jest posortowana, należy rozważyć
Arrays.binarySearch()
- Jeśli tablica nie jest posortowana, prosty zwyczaj metoda indexOf może wykonywać takie same, bez marnowania cykli przeliczania
int[]
Do List<Integer>
przykład:
public static void main(String[] args) throws Exception {
int[] array = {1, 2, 3, 4, 5, 6};
System.out.print("Binary Search: ");
System.out.println(Arrays.binarySearch(array, 4));
int[] array2 = {5, 8, 2, 5, 3, 4, 1};
System.out.print("Manual Search: ");
System.out.println(indexOf(array2, 4));
}
public static int indexOf(int[] array, int search) {
for (int i = 0; i < array.length; i++) {
if (array[i] == search) {
return i;
}
}
return -1;
}
Wyniki:
Binary Search: 3
Manual Search: 5
'Arrays.asList' nie działa dla prymitywnych tablic. Daje 'List' zawierający oryginalne 'int []'. -1 oznacza, że 4 nie jest jednym z elementów "List" –
'Arrays.asList (int [])' tworzy 'List' jednego elementu, który zawiera całą tablicę' int [] '. Zmień 'int []' na 'Integer []' zamiast – MadProgrammer
Próbujesz jawnie pisać typowy 'asList' (' Arrays. asList (array) ') zamiast polegać na inferencji typów, a kompilator powie ci, dlaczego nie działa. –