Jak utworzyć pod-tablicę z innej tablicy? Czy istnieje metoda pobierająca indeksy z pierwszej tablicy, taka jak:
methodName(object array, int start, int end)
Nie chcę omijać tworzenia pętli i narażania mojego programu na cierpienia.
Wciąż pojawia się błąd:
nie można znaleźć metody symbolu copyOfRange (int [], int, int)
To jest mój kod:
import java.util.*;
public class testing
{
public static void main(String [] arg)
{
int[] src = new int[] {1, 2, 3, 4, 5};
int b1[] = Arrays.copyOfRange(src, 0, 2);
}
}
org.bouncycastle.util.Arrays
.Arrays.copyOfRange(..)
został dodany w Javie 1.6. Więc może nie masz najnowszej wersji. Jeśli aktualizacja nie jest możliwa, spójrz naSystem.arraycopy(..)
źródło
Użyj metody copyOfRange z klasy java.util.Arrays:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
Po więcej szczegółów:
Link do podobnego pytania
źródło
Tak, nazywa się System.arraycopy (Object, int, Object, int, int) .
Nadal jednak gdzieś będzie wykonywać pętlę, chyba że da się to zoptymalizować
REP STOSW
za pomocą JIT (w którym to przypadku pętla znajduje się w CPU).źródło
Korzystając z Apache ArrayUtils do pobrania pod tym linkiem , możesz łatwo skorzystać z tej metody
„boolean” to tylko przykład, istnieją metody dla wszystkich pierwotnych typów Java
źródło
JDK> = 1,8
Zgadzam się ze wszystkimi powyższymi odpowiedziami. Jest także dobry sposób z strumieniami Java 8:
Zaletą tego jest to, że może być przydatny dla wielu różnych typów tablic „src” i pomaga usprawnić zapisywanie operacji potoku w strumieniu.
Nie dotyczy to tego pytania, ale na przykład, jeśli tablica źródłowa była
double[]
i chcemy wziąćaverage()
pod-tablicę:źródło
źródło
Kod jest poprawny, więc domyślam się, że używasz starszego JDK. Jawadoc dla tej metody mówi, że jest tam od 1.6. W wierszu polecenia wpisz:
Zgaduję, że nie korzystasz z wersji 1.6
źródło
Ja używasz java przed wersją 1.6 użyj
System.arraycopy()
zamiast tego. Lub zaktualizuj swoje środowisko.źródło