Uso de los recopiladores de Guava para recopilar flujos en colecciones inmutables en Java

Guava es un conjunto de bibliotecas principales de Google que incluye nuevos tipos de colección. Por ejemplo, tenemos multimap y multisets, colecciones inmutables, una biblioteca de gráficos y utilidades para la concurrencia. Es utilizado por muchas empresas. En este artículo, vamos a ver cómo usar los recopiladores de Guava para recopilar flujos en colecciones inmutables en Java. Para usar guayaba, necesitamos agregar la dependencia de Maven. De lo contrario, tenemos que agregar esta biblioteca externamente a nuestro proyecto.

Ilustración:

<dependency>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
          <version>22.0</version>
</dependency>

Repasemos los mismos conceptos importantes que involucran métodos que se han involucrado antes antes de pasar a la implementación por motivos de claridad y comprensión. El concepto de flujos juega un papel importante aquí que se introdujo en Java 8. Un flujo representa una secuencia de elementos y admite diferentes tipos de operaciones para realizar cálculos u operaciones masivas en esos elementos.

  • Una secuencia no es una estructura de datos, sino que recibe información de las colecciones, arrays 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 devuelve una secuencia como resultado, por lo tanto, se pueden canalizar varias operaciones intermedias. Las operaciones de terminal marcan el final de la secuencia y devuelven el resultado.

Sintaxis:

static IntStream range (int start, int end)

Tipo de retorno : una secuencia de enteros

Descripción : este método se utiliza para devolver un orden secuencial de Integer Stream

Stream intStream boxed()

Tipo de retorno : corriente

Descripción : este método devuelve Stream que consta de los elementos de este flujo

Ejemplo 1:

Java

// Java Program to illustrate Use Guava's Collectors
// for Collecting Streams to Immutable Collections
 
// Importing utility classes from java.util package
// Importing guava Library
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
 
// Main class
public class App {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating a stream of Integers from 0 to 9
        // by using boxed method converting that stream
        // into stream of elements
        List<Integer> list
            = IntStream.range(0, 9).boxed().collect(
                ImmutableList.toImmutableList());
        // printing the list
        System.out.println(list);
    }
}

Producción:

[0, 1, 2, 3, 4, 5, 6, 7, 8]

Nota: En el resultado anterior hemos impreso una lista inmutable de enteros. Si intentamos modificar la lista, arrojará una UnsupportedOperationException .

Ejemplo 2:

Java

// Java Program to illustrate Use Guava's Collectors
// for Collecting Streams to Immutable Collections
// Where UnsupportedOperationException is thrown
 
// Importing utility classes from java.util package
// Importing Guava library
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
 
// Main class
public class App {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating a stream of Integers from 0 to 9
        // by using boxed method converting that stream
        // into stream of elements
        List<Integer> list
            = IntStream.range(0, 9).boxed().collect(
                ImmutableList.toImmutableList());
 
        // Adding more elements to immutatble list
        // Note: Trying to add
        list.add(12);
        list.add(13);
        list.add(14);
 
        // Print and display the List
        System.out.println(list);
    }
}

Producción:

Exception in thread "main" java.lang.UnsupportedOperationException
at com.google.common.collect.ImmutableCollection.add(ImmutableCollection.java:220)
at james.App.main(App.java:15)

Publicación traducida automáticamente

Artículo escrito por aniketdalal126 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 *