当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java LinkedTransferQueue drainTo()用法及代码示例


drainTo(Collection super E> c)

java.util.concurrent.LinkedTransferQueue类的raintTo(Collection c)方法是Java中的内置函数,它删除此队列中存在的所有元素并将它们添加到提供的集合中。与重复轮询此队列相比,这是一种更有效的方法。

尝试从队列中将元素添加到集合c时,也可能会遇到失败,并且由于该失败,当引发关联的异常时,元素会在两个集合之间分配。如果尝试使用队列将drainTo()自身进行队列,则将抛出IllegalArgumentException。如果在操作进行过程中修改了指定的集合,则此操作的行为是不确定的。因此,使用这种方法时,需要注意这种情况以克服异常。

用法:


public int drainTo(Collection super E> c)

参数:该函数接受强制性参数c,该参数是要将元素传输到的集合。

返回值:该函数返回从队列中耗尽到集合的元素数。

异常:此方法引发以下异常:

  • NullPointerException -如果集合为null
  • IllegalArgumentException-如果方法的参数阻止将其添加到指定的集合中

以下程序说明了java.util.concurrent.LinkedTransferQueue.drainTo()方法的使用:

程序1:程序将所有元素从队列中排出到指定的集合。

// 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); 
    } 
}
输出:
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]

程序2:在drainTo()中显示NullPointerException的程序。

// 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); 
        } 
    } 
}
输出:
Exception: java.lang.NullPointerException

drainTo(Collection super E> c, int maxElements)

java.util.concurrent.LinkedTransferQueue的drainTo(Collection super E> c,int maxElements)方法是Java中的一个内置函数,用于将固定数字元素(在drainTo()中作为整数传递)传递给也传递的集合作为方法的参数。传输元素后,LinkedTransferQueue仅具有那些未传输到集合的元素。此函数与上述函数相同,但在转移固定元素数量方面存在一些限制。

用法:


public int drainTo(Collection super E> c,
          int maxElements)

参数:该方法接受两个参数:

  • c-它表示从LinkedTransferQueue传输元素的集合。
  • maxElements-这是整数类型,是指要转移到集合中的最大元素数。
  • 返回值:该函数返回从队列中耗尽到集合的元素数。

    Exception:此方法引发以下异常:

    • NullPointerException -如果集合为null
    • IllegalArgumentException-如果方法的参数阻止将其添加到指定的集合中

    程序1:程序最多将给定数量的可用元素从队列中耗尽到指定的集合。

    // 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); 
        } 
    }
    输出:
    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]
    

    程序2:在drainTo()中显示NullPointerException的程序。

    // 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); 
            } 
        } 
    }
    输出:
    Exception: java.lang.NullPointerException
    

    Reference:



相关用法


注:本文由纯净天空筛选整理自rupesh_rao大神的英文原创作品 LinkedTransferQueue drainTo() method in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。