Diferencia entre flujos y colecciones en Java

La colección es una estructura de datos en memoria, que contiene todos los valores que tiene actualmente la estructura de datos. Cada elemento de la Colección debe calcularse antes de agregarlo a la Colección. En una colección se pueden realizar operaciones como búsqueda, clasificación, inserción, manipulación y eliminación. Proporciona muchas interfaces como ( Set , List , Queue , Deque ) y Clases como ( ArrayList , Vector , LinkedList , PriorityQueue , HashSet ).

Difference-Between-Streams-and-Collections-in-Java

Por otro lado, IStream es una API que se presenta en Java 8 y se usa para procesar colecciones de objetos. Una secuencia es una secuencia de objetos que admite varios métodos que se pueden canalizar para producir el resultado deseado. La API Stream se utiliza para procesar colecciones de objetos.

Las características principales de la secuencia de Java son las siguientes:

  • Un flujo no es una estructura de datos, sino que recibe información de las colecciones, arreglos o canales de E/S.
  • Los flujos no cambian la estructura de datos original, solo proporcionan el resultado según los métodos canalizados.
  • Cada operación intermedia se ejecuta con pereza y, como resultado, devuelve otra secuencia, por lo que se pueden canalizar varias operaciones intermedias. Las operaciones de terminal marcan el final de la secuencia y devuelven el resultado.

Ejemplo 1: Colecciones

Java

// Java Program to Illustrate Collection
 
// Importing required classes
import java.io.*;
import java.util.*;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an instance of list
        List<String> CompanyList = new ArrayList<>();
 
        // Adding elements using add() method
        CompanyList.add("Google");
        CompanyList.add("Apple");
        CompanyList.add("Microsoft");
 
        // Now creating a comparator
        Comparator<String> com
            = (String o1, String o2) -> o1.compareTo(o2);
 
        // Sorting the list
        Collections.sort(CompanyList, com);
 
        // Iterating using for each loop
        for (String name : CompanyList) {
 
            // Printing the elements
            System.out.println(name);
        }
    }
}
Producción

Apple
Google
Microsoft

 Ejemplo: flujos

Java

// Java Program to Demonstrate streams
 
// Importing required classes
import java.io.*;
import java.util.*;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an empty Arraylist
        List<String> CompanyList = new ArrayList<>();
 
        // Adding elements to above ArrayList
        CompanyList.add("Google");
        CompanyList.add("Apple");
        CompanyList.add("Microsoft");
 
        // Sorting the list
        // using sorted() method and
        // printing using for-each loop
        CompanyList.stream().sorted().forEach(
            System.out::println);
    }
}
Producción

Apple
Google
Microsoft

Vamos a tabular la diferencia entre ellos, que es la siguiente:

    FLUJOS        

 COLECCIONES          

No almacena datos, opera en la estructura de datos de origen, es decir, la recopilación. Almacena/mantiene todos los datos que la estructura de datos tiene actualmente en una estructura de datos particular como Conjunto, Lista o Mapa,
Utilizan interfaces funcionales como lambda, lo que lo convierte en una buena opción para el lenguaje de programación. No utilizan interfaces funcionales.
Java Streams son consumibles, es decir; para atravesar la corriente, debe crearse cada vez. No son consumibles, es decir; puede ser transitable varias veces sin crearlo de nuevo.
Los flujos de Java admiten el procesamiento secuencial y paralelo. Es compatible con el procesamiento paralelo y el procesamiento paralelo puede ser muy útil para lograr un alto rendimiento.
Todas las interfaces y clases de la API de flujo de Java están en el paquete j ava.util.stream . Las clases específicas para tipos primitivos como IntStream , LongStream y DoubleStream se utilizan en las colecciones, ya que los tipos de datos primitivos como int, long en las colecciones que utilizan el encuadre automático y estas operaciones pueden llevar mucho tiempo.
Los flujos no se pueden modificar, es decir, no se pueden agregar o quitar elementos de los flujos. Estos son modificables, es decir, uno puede agregar o eliminar fácilmente elementos de las colecciones.
Los flujos se iteran internamente con solo mencionar las operaciones. Las colecciones se iteran externamente mediante bucles.

Publicación traducida automáticamente

Artículo escrito por goelshubhangi3118 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *