Estoy mirando los documentos para el IntStream, y veo un toArraymétodo, pero no hay forma de ir directamente a unList<Integer>
¿Seguramente hay una manera de convertir Streama a List?
Estoy mirando los documentos para el IntStream, y veo un toArraymétodo, pero no hay forma de ir directamente a unList<Integer>
¿Seguramente hay una manera de convertir Streama a List?
Respuestas:
IntStream::boxedIntStream::boxedconvierte un IntStreama Stream<Integer>, que luego puedes collectconvertir en un List:
theIntStream.boxed().collect(Collectors.toList())
El boxedmétodo convierte los intvalores primitivos de an IntStreamen un flujo de Integerobjetos. La palabra "boxeo" nombra el proceso de conversión int⬌ Integer. Vea el tutorial de Oracle .
toList. Esto se realiza mediante la colocación de la siguiente entre las importaciones del archivo: static import java.util.stream.Collectors.toList;. Entonces la llamada por cobrar se lee solo .collect(toList()).
Collectorsclase en Preferencias -> Java -> Editor -> Content Assist -> Favoritos . Después de esto, solo tiene que escribir toLial presionar Ctr + Espacio para que el IDE se complete toListy agregue la importación estática.
boxed()papel
También puede usar mapToObj () en una secuencia, que toma una IntFunción y devuelve una secuencia con valor de objeto que consiste en los resultados de aplicar la función dada a los elementos de esta secuencia.
List<Integer> intList = myIntStream.mapToObj(i->i).collect(Collectors.toList());
boxed()se delega.
Puede usar colecciones primitivas disponibles en Eclipse Collections y evitar el boxeo.
MutableIntList list =
IntStream.range(1, 5)
.collect(IntArrayList::new, MutableIntList::add, MutableIntList::addAll);
Nota: Soy colaborador de Eclipse Collections.
MutableIntList list = IntLists.mutable.withAll(IntStream.range(1, 5))
Puedes usar el método de recolección:
IntStream.of(1, 2, 3).collect(ArrayList::new, List::add, List::addAll);
De hecho, esto es casi exactamente lo que hace Java cuando llama a .collect (Collectors.toList ()) en una secuencia de objetos:
public static <T> Collector<T, ?, List<T>> toList() {
return new Collectors.CollectorImpl(ArrayList::new, List::add, (var0, var1) -> {
var0.addAll(var1);
return var0;
}, CH_ID);
}
Nota: El tercer parámetro solo es necesario si desea ejecutar la recopilación paralela; para una colección secuencial, bastará con los dos primeros.