Jak przekonwertować int[]
na List<Integer>
Javę?
Oczywiście jestem zainteresowany inną odpowiedzią niż robienie tego w pętli, pozycja po pozycji. Ale jeśli nie ma innej odpowiedzi, wybiorę tę jako najlepszą, aby pokazać fakt, że ta funkcja nie jest częścią Java.
java
arrays
collections
boxing
autoboxing
pupeno
źródło
źródło
Odpowiedzi:
Nie ma skrótu do konwersji z
int[]
na,List<Integer>
ponieważArrays.asList
nie zajmuje się boksem i po prostu utworzy coś,List<int[]>
czego nie chcesz. Musisz stworzyć metodę użyteczności.źródło
new ArrayList<Integer>() {{ for (int i : ints) add(i); }}
Strumienie
W Javie 8 możesz to zrobić
źródło
Również z bibliotek guava ... com.google.common.primitives.Ints:
źródło
Arrays.asList nie będzie działać tak, jak oczekują niektóre inne odpowiedzi.
Ten kod nie utworzy listy 10 liczb całkowitych. Wydrukuje 1 , a nie 10 :
Spowoduje to utworzenie listy liczb całkowitych:
Jeśli masz już tablicę ints, nie ma szybkiego sposobu na konwersję, lepiej skorzystaj z pętli.
Z drugiej strony, jeśli tablica zawiera obiekty, a nie prymitywy, Arrays.asList będzie działać:
źródło
Dodam inną odpowiedź inną metodą; brak pętli, ale anonimowa klasa, która będzie korzystać z funkcji autoboxowania:
źródło
set
metodę i teraz mogę nawet posortować tablicę ...Najmniejszy fragment kodu to:
skąd pochodzi ArrayUtils z commons-lang :)
źródło
ArrayUtils
że jest to względnie duża biblioteka dla aplikacji na AndroidaArrayUtils.toPrimitive(...)
jest kluczem.W Javie 8 ze strumieniem:
lub z kolekcjonerami
źródło
W Javie 8:
źródło
Jeśli używasz Java 8, możemy użyć interfejsu API strumienia, aby przekonwertować go na listę.
Możesz także użyć IntStream do konwersji.
Istnieją inne zewnętrzne biblioteki, takie jak guawa i wspólne apache, które również mogą je konwertować.
Twoje zdrowie.
źródło
Warto również sprawdzić ten raport o błędzie , który został zamknięty z powodu „Brak usterki” i następujący tekst:
„Nie bez powodu zachowanie automatycznego sprawdzania całych tablic nie jest określone. W przypadku dużych tablic może być zbyt drogie”.
źródło
spróbuj tej klasy:
walizka testowa:
źródło
Najlepszy strzał:
Przykłady:
źródło
Jeśli jesteś otwarty na korzystanie z biblioteki innej firmy, będzie to działać w kolekcjach Eclipse :
Uwaga: jestem osobą odpowiedzialną za kolekcje Eclipse .
źródło
źródło
A co z tym:
int[] a = {1,2,3}; Integer[] b = ArrayUtils.toObject(a); List<Integer> c = Arrays.asList(b);
źródło
Oto rozwiązanie:
Wynik:
źródło
Oto kolejna możliwość, znowu w przypadku strumieni Java 8:
źródło
Oto ogólny sposób konwersji tablicy na ArrayList
Stosowanie
źródło