"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo convertir un iterador en una secuencia sin crear una copia?

¿Cómo convertir un iterador en una secuencia sin crear una copia?

Publicado el 2024-11-22
Navegar:970

How to Convert an Iterator to a Stream Without Creating a Copy?

Convertir un iterador en una secuencia sin copiar

Convertir un iterador directamente en una secuencia sin crear una copia intermedia es una operación deseable por razones de rendimiento. Aquí hay dos métodos efectivos para lograr esta conversión:

Método 1: usar Spliterator

Cree un Spliterator a partir del Iterator usando la clase Spliterators y utilícelo como base para la secuencia:

Iterator sourceIterator = Arrays.asList("A", "B", "C").iterator();
Stream targetStream = StreamSupport.stream(
          Spliterators.spliteratorUnknownSize(sourceIterator, Spliterator.ORDERED),
          false);

Método 2: usar Iterable

Cree un Iterable a partir del Iterador usando una expresión lambda. Iterable es una interfaz funcional que hace que esta conversión sea sencilla:

Iterator sourceIterator = Arrays.asList("A", "B", "C").iterator();

Iterable iterable = () -> sourceIterator;
Stream targetStream = StreamSupport.stream(iterable.spliterator(), false);

La clave para evitar una copia en ambos métodos es que utilizan la clase StreamSupport, que le permite crear un Stream directamente desde un Spliterator o Iterable sin manipulación de colección intermedia.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3