Подтвердить что ты не робот

Конвертировать длинные [] в длинные [] (примитивные) java

Как преобразовать Long [] в long []? Например, я знаю, как преобразовать, если это не массив, как показано ниже.

long ll = (Long)Object[1].longValue()

Но как я могу преобразовать массив, нижеследующий не прав, но кто-нибудь может его исправить?

long[] l_ar = (Long[])Object[]  
4b9b3361

Ответ 1

Спасибо всем за ответ; Я просто вставляю свое окончательное решение.

List<Long> longObjects = new ArrayList<Long>();

long[] longArray2 = ArrayUtils.toPrimitive(longObjects.toArray(new Long[longObjects.size()]));

Ответ 2

Вы можете украсть решение на основе ArrayUtils

Long[] longObjects = { 1L, 2L, 3L };
long[] longArray = ArrayUtils.toPrimitive(longObjects);

Ответ 3

Для этого существует стандартный метод 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;
}

Ответ 4

Чтобы сделать это, лучшим способом было бы перемещаться по каждому массиву.

Например, переход из 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.

Ответ 5

с использованием java 8 потоков:

public static long[] unboxed(final Long[] array) {
    return Arrays.stream(array).filter(Objects::nonNull).mapToLong(Long::longValue).toArray();
}