Mam tablicę liczb całkowitych w Javie, chciałbym użyć tylko jej części. Wiem, że w Pythonie możesz zrobić coś takiego jak ta tablica [indeks:] i zwraca tablicę z indeksu. Czy coś takiego jest możliwe w Javie.
275
Długość tablicy w Javie jest niezmienna. Musisz więc skopiować żądaną część jako nową tablicę.
Użyj copyOfRange
metody z klasy java.util.Arrays :
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
startIndex jest początkowym indeksem zakresu do skopiowania, włącznie.
endIndex to końcowy indeks zakresu do skopiowania, wyłączny. (Ten indeks może leżeć poza tablicą)
Na przykład:
//index 0 1 2 3 4
int[] arr = {10, 20, 30, 40, 50};
Arrays.copyOfRange(arr, 0, 2); // returns {10, 20}
Arrays.copyOfRange(arr, 1, 4); // returns {20, 30, 40}
Arrays.copyOfRange(arr, 2, arr.length); // returns {30, 40, 50} (length = 5)
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,255)
ponieważ zamiast 255 nie mogę użyć Integer.MAX_VALUE, na wypadek, gdybym nie chciał uzyskać rzeczywistej długościendIndex
rozmiaru większego niż rozmiar tablicy przekazany jako pierwszy argument. Jeśli więc chcesz mieć pełną kopię, utwórz zmienną odnoszącą się do tej tablicy i użyjArrays.copyOfRange(var, 0, var.length)
lubArrays.copyOf(var, var.length)
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,Short.MAX_VALUE)
ArrayIndexOutOfBoundsException
.Możesz owinąć tablicę jako listę i poprosić o jej podlistę.
źródło
Tak, możesz użyć Arrays.copyOfRange
Robi to samo (pamiętaj, że istnieje kopia: nie zmieniasz początkowej tablicy).
źródło
List
i a,subList
jak opisano w odpowiedzi @ K-ballo.Możesz spróbować:
Zobacz javadoc dla Systemu .
źródło
Jeśli używasz Java 1.6 lub nowszej, możesz użyć
Arrays.copyOfRange
do skopiowania części tablicy. Z javadoc:Oto prosty przykład :
źródło
Sprawdź copyOfRange ; i przykład:
źródło
Możesz użyć czegoś takiego:
Arrays#copyOfRange
źródło
Możesz użyć
subList(int fromIndex, int toIndex)
metody na liczbach całkowitych arr, mniej więcej tak:Wyjście będzie:
2 3
.Zauważ, że
subList(int fromIndex, int toIndex)
metoda wykonuje minus 1 na drugiej zmiennej, którą otrzymuje (var2 - 1), nie wiem dokładnie dlaczego, ale tak właśnie się dzieje, być może w celu zmniejszenia szansy na przekroczenie rozmiaru tablicy.źródło