Как преобразовать массив float в массив long?

232
24 апреля 2017, 02:25

Есть ли возможность сделать это без перечисления? Просто с помощью какого-нибудь приведения.

Примерно так:

float[] b;
long a[] = (long)b[];
Answer 1

Использовать Guava библиотеку: https://github.com/google/guava

import com.google.common.primitives.Longs;
import com.google.common.primitives.Floats;
float[] b = new float[5];
long a[] = Longs.toArray(Floats.asList(b));
Answer 2

Если под перечислением подразумевается цикл for:

long[] a = new long[b.length];
for (int i = 0; i < b.length; i++)
{
    a[i] = (long)b[i];
}

то вместо цикла можно воспользоваться Java 8 Stream:

long[] a = IntStream.range(0, b.length)
        .mapToDouble(i -> b[i])
        .mapToLong(e -> (long)e)
        .toArray();

Однако простым такое решение назвать сложно. Если бы массив b был типа double, то код был бы короче и проще:

long[] a = DoubleStream.of(b)
        .mapToLong(e -> (long)e)
        .toArray();

Более простое и короткое решение возможно с использованием сторонних библиотек (таких как Guava).

READ ALSO
button.getText() в Java

button.getText() в Java

Добрый день, вот простенькая программаПытаюсь получить в переменную новую надпись на кнопке, ничего не получается:

214
Exceptions Checked или UnChecked в Java?

Exceptions Checked или UnChecked в Java?

При создании своих Exceptions какие предпочесть Checked или UnChecked в Java? Какие преимущества/недостатки?

199
Первый раз отправляется get запрос, 2 раз нет

Первый раз отправляется get запрос, 2 раз нет

Вот, где обрабатывается запрос и при выборе элемента в списке снова запускается с новым параметром q:

220