Método LinkedTransferQueue DrainTo() en Java

drenajeA(Colección c)

El método de drenaje (Colección c) de java.util.concurrent.LinkedTransferQueue Class es una función integrada en Java que elimina todos los elementos presentes en esta cola y los agrega a la colección proporcionada. Esta es una forma más eficiente que sondear repetidamente esta cola.

También existe la posibilidad de que se produzca un error al intentar agregar elementos a la colección c desde la cola y, debido a ese error, los elementos se distribuyen entre ambas colecciones cuando se lanza la excepción asociada. Si se intenta drenar una cola() para ponerse en cola, se lanzará IllegalArgumentException . Si la colección especificada se modifica mientras la operación está en curso, el comportamiento de esta operación no está definido. Entonces, para usar tales métodos, uno debe cuidar este tipo de situación para superar las excepciones.

Sintaxis:

public int drainTo(Collection c)

Parámetros: La función acepta un parámetro obligatorio c que es la colección a la que se van a transferir los elementos.

Valor devuelto: la función devuelve el número de elementos drenados a la colección de la cola.

Excepciones: este método arroja las siguientes excepciones:

  • NullPointerException : si la colección es nula
  • IllegalArgumentException : si los argumentos del método impiden que se agregue a la colección especificada

Los siguientes programas ilustran el uso del método java.util.concurrent.LinkedTransferQueue.drainTo():

Programa 1: Programa para drenar todos los elementos de la cola a la colección especificada.

// Java Program Demonstrate drainTo()
// method of LinkedTransferQueue
  
import java.util.*;
import java.util.concurrent.LinkedTransferQueue;
  
class GFG {
    public static void main(String[] args)
    {
  
        // Initializing the List
        List<Integer> list = new ArrayList<Integer>();
  
        // Initializing the queue
        LinkedTransferQueue<Integer>
            queue = new LinkedTransferQueue<Integer>();
  
        // Adding elements to this queue
        for (int i = 10; i <= 15; i++)
            queue.add(i);
  
        // Printing the elements of the queue
        System.out.println("Elements in the queue = "
                           + queue);
  
        // drainTo() method removes all available elements
        // from this queue and adds them to the list
        queue.drainTo(list);
  
        // Printing the elements of the queue after drainTo()
        System.out.println("Elements left in the queue :"
                           + queue);
  
        // Printing the elements of the list
        System.out.println("Elements drained in the list :"
                           + list);
    }
}
Producción:

Elements in the queue = [10, 11, 12, 13, 14, 15]
Elements left in the queue :[]
Elements drained in the list :[10, 11, 12, 13, 14, 15]

Programa 2: Programa para mostrar NullPointerException en DrainTo().

// Java Program Demonstrate drainTo()
// method of LinkedTransferQueue
  
import java.util.ArrayList;
import java.util.concurrent.LinkedTransferQueue;
  
class GFG {
    public static void main(String[] args)
        throws InterruptedException
    {
  
        // Initializing the queue
        LinkedTransferQueue<Integer>
            queue = new LinkedTransferQueue<Integer>();
  
        // add elements to queue
        queue.put(10);
        queue.put(20);
        queue.put(30);
  
        // create a collection with null
        ArrayList<Integer> add = null;
  
        // try to drain null queue to collection
        try {
            // this will throw exception
            // as the add list is null
            queue.drainTo(add);
        }
        catch (Exception e) {
            System.out.println("Exception: " + e);
        }
    }
}
Producción:

Exception: java.lang.NullPointerException

drenajeA(Colección c, int maxElements)

El método de drenajePara(Colección c, int maxElements) de java.util.concurrent.LinkedTransferQueue es una función incorporada en Java que se utiliza para transferir elementos de números fijos que se pasan como enteros en drenajePara() a la colección que también se pasa como parámetro al método. Después de transferir los elementos, LinkedTransferQueue tiene solo aquellos elementos que no se transfieren a la colección. Esta función es la misma que la función anterior con algunas limitaciones para transferir un número fijo de elementos.

Sintaxis:

public int drainTo(Collection c,
          int maxElements)

Parámetro: El método acepta dos parámetros:

  • c – Representa la colección para transferir elementos desde LinkedTransferQueue.
  • maxElements : es de tipo entero y se refiere a la cantidad máxima de elementos que se transferirán a la colección.
  • Valor devuelto: la función devuelve el número de elementos drenados a la colección de la cola.

    Excepción: este método arroja las siguientes excepciones:

    • NullPointerException : si la colección es nula
    • IllegalArgumentException : si los argumentos del método impiden que se agregue a la colección especificada

    Programa 1: programa para drenar como máximo el número dado de elementos disponibles de la cola a la colección especificada.

    // Java Program Demonstrate drainTo()
    // method of LinkedTransferQueue
      
    import java.util.ArrayList;
    import java.util.List;
    import java.util.concurrent.LinkedTransferQueue;
      
    class GFG {
        public static void main(String[] args)
        {
      
            // Initializing the List
            List<Integer> list = new ArrayList<Integer>();
      
            // Initializing the queue
            LinkedTransferQueue<Integer>
                queue = new LinkedTransferQueue<Integer>();
      
            // Adding elements to this queue
            for (int i = 1; i <= 10; i++)
                queue.add(i);
      
            // Printing the elements of the queue
            System.out.println("Elements in the queue = "
                               + queue);
      
            // drainTo() method removes at most
            // the given number of available elements
            // from this queue and adds them to the list.
            queue.drainTo(list, 5);
      
            // Printing the elements of the queue after drainTo()
            System.out.println("Elements left in the queue :"
                               + queue);
      
            // Printing the elements of the list
            System.out.println("Elements drained in the list :"
                               + list);
        }
    }
    Producción:

    Elements in the queue = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Elements left in the queue :[6, 7, 8, 9, 10]
    Elements drained in the list :[1, 2, 3, 4, 5]
    

    Programa 2: Programa para mostrar NullPointerException en DrainTo().

    // Java Program Demonstrate drainTo()
    // method of LinkedTransferQueue
      
    import java.util.ArrayList;
    import java.util.concurrent.LinkedTransferQueue;
      
    class GFG {
        public static void main(String[] args)
            throws InterruptedException
        {
      
            // Initializing the queue
            LinkedTransferQueue<Integer>
                queue = new LinkedTransferQueue<Integer>();
      
            // add elements to queue
            queue.put(10);
            queue.put(20);
            queue.put(30);
      
            // create a collection with null
            ArrayList<Integer> add = null;
      
            // try to drain null queue to collection
            try {
                // this will throw exception
                // as the add list is null
                queue.drainTo(add, 2);
            }
            catch (Exception e) {
                System.out.println("Exception: " + e);
            }
        }
    }
    Producción:

    Exception: java.lang.NullPointerException
    

    Referencia:

Publicación traducida automáticamente

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