Ответ 1
Спасибо всем за ответ; Я просто вставляю свое окончательное решение.
List<Long> longObjects = new ArrayList<Long>();
long[] longArray2 = ArrayUtils.toPrimitive(longObjects.toArray(new Long[longObjects.size()]));
Как преобразовать Long [] в long []? Например, я знаю, как преобразовать, если это не массив, как показано ниже.
long ll = (Long)Object[1].longValue()
Но как я могу преобразовать массив, нижеследующий не прав, но кто-нибудь может его исправить?
long[] l_ar = (Long[])Object[]
Спасибо всем за ответ; Я просто вставляю свое окончательное решение.
List<Long> longObjects = new ArrayList<Long>();
long[] longArray2 = ArrayUtils.toPrimitive(longObjects.toArray(new Long[longObjects.size()]));
Вы можете украсть решение на основе ArrayUtils
Long[] longObjects = { 1L, 2L, 3L };
long[] longArray = ArrayUtils.toPrimitive(longObjects);
Для этого существует стандартный метод API нет, как обрабатывать null
-элементы?), поэтому вам нужно будет создать такой метод самостоятельно.
Что-то вроде этого (бросит NullPointerException
на любой объект beeing null
):
public static long[] toPrimitives(Long... objects) {
long[] primitives = new long[objects.length];
for (int i = 0; i < objects.length; i++)
primitives[i] = objects[i];
return primitives;
}
Чтобы сделать это, лучшим способом было бы перемещаться по каждому массиву.
Например, переход из Long [] в long []:
Long[] objLong = new Long[10];
//fill objLong with some values
long[] primLong = new long[objLong.length]
for(int index = 0; index < objLong.length; index++)
{
primLong[index] = objLong[index];
}
Из-за автоматической распаковки это должно получиться путем преобразования Long to long.
с использованием java 8 потоков:
public static long[] unboxed(final Long[] array) {
return Arrays.stream(array).filter(Objects::nonNull).mapToLong(Long::longValue).toArray();
}