Как создать подмассив из другого массива? Есть ли метод, который берет индексы из первого массива, такие как:
methodName(object array, int start, int end)
Я не хочу делать циклы и заставлять страдать мою программу.
Я получаю ошибку:
невозможно найти метод символа copyOfRange (int [], int, int)
Это мой код:
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(..)
был добавлен в Java 1.6. Так что, возможно, у вас нет последней версии. Если обновление невозможно, посмотрите наSystem.arraycopy(..)
источник
Используйте метод copyOfRange из класса java.util.Arrays:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
Больше подробностей:
Ссылка на похожий вопрос
источник
Да, он называется System.arraycopy (Object, int, Object, int, int) .
Тем не менее, он по-прежнему будет выполнять цикл где-то, если только он не может быть оптимизирован во что-то вроде
REP STOSW
JIT (в этом случае цикл находится внутри ЦП).источник
Используя Apache ArrayUtils, загружаемый по этой ссылке, вы можете легко использовать метод
"логическое" является только примером, есть методы для всех типов примитивов Java
источник
JDK> = 1,8
Я согласен со всеми ответами выше. Есть также хороший способ с Java 8 Streams:
Преимущество этого в том, что он может быть полезен для множества различных типов массивов "src" и помогает улучшить операции записи конвейера в потоке.
Не конкретно об этом вопросе, но, например, если исходный массив был
double[]
и мы хотели взятьaverage()
подмассив:источник
источник
Код правильный, поэтому я предполагаю, что вы используете более старый JDK. Javadoc для этого метода говорит, что он существует с 1.6. В командной строке введите:
Я предполагаю, что у вас не работает 1.6
источник
Если вы используете Java до версии 1.6, используйте
System.arraycopy()
вместо этого. Или обновите свою среду.источник