Как преобразовать список ArrayListlist = new ArrayList<>() в массив long[]?
Подскажите пожалуйста самое оптимальное решение(короткое). Допустим дан список ArrayListlist = new ArrayList<>() и его надо преобразовать в массив long[]data.
Ответы (2 шт):
Автор решения: Алексей г
→ Ссылка
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Objects;
public class Main {
public static void main(String[] args) {
ArrayList<Long> list = new ArrayList<>();
list.add(1L);
list.add(2L);
list.add(3L);
list.add(4L);
long[] longsPrimitive = list.stream()
.filter(Objects::nonNull)
.mapToLong(Long::longValue)
.toArray();
System.out.println(Arrays.toString(longsPrimitive));
}
}
Автор решения: Andrew Bystrov
→ Ссылка
красиво через стримы:
List<Long> list = new ArrayList<>();
long[] data = list.stream()
.mapToLong(Long::valueOf)
.toArray();
единственное, что нужно помнить, что в исходном ArrayList<Long> могут содежатся null значения, и тогда эти null значения надо обходить ( иначе будет NullPointerException). Обойти null можно с помощью .filter :
long[] data = list.stream()
.filter(Objecst::nonNull)
.mapToLong(Long::valueOf)
.toArray();