Java PriorityQueue retainAll() 方法



描述

java PriorityQueue retainAll(Collection<?> c) 方法保留在 ArrayDeque 对象和提供的集合元素中存在的公共元素,并删除其他剩余元素。此方法修改 ArrayDeque 对象。

声明

以下是java.util.PriorityQueue.retainAll(Collection<?> c) 方法的声明

public boolean retainAll​(Collection<?> c)

参数

c − 包含要从此集合中保留的元素的集合。

返回值

如果此 ArrayDeque 因调用而发生更改,则返回 true。

异常

NullPointerException − 如果此 ArrayDeque 包含一个或多个空元素,并且指定的集合不支持空元素,或者指定的集合为空。

保留 PriorityQueue 中整数的所有给定元素示例

以下示例显示了使用整数的 Java PriorityQueue retainAll() 方法的使用方法。我们正在创建一个整数的 PriorityQueue,添加一些元素,打印它,然后使用 retainAll() 方法保留一些元素。由于 PriorityQueue 已被修改,因此会打印它以检查是否保留了指定的元素。

package com.tutorialspoint;

import java.util.PriorityQueue;
import java.util.Arrays;

public class PriorityQueueDemo {
   public static void main(String[] args) {
      
      // create an empty priority queue
      PriorityQueue<Integer> queue = new PriorityQueue<>();

      // use add() method to add elements in the queue
      queue.add(25);
      queue.add(30);
      queue.add(20);
      queue.add(18);        

      // let us print all the elements available in queue
      System.out.println("PriorityQueue = " + queue);

      // it will retain two common elements
      System.out.println("PriorityQueue modified:  " + queue.retainAll(Arrays.asList(11,30,20,12)));
	  
      // let us print all the elements available in queue again
      System.out.println("PriorityQueue = " + queue);
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果:

PriorityQueue = [25, 30, 20, 18]
PriorityQueue modified:  true
PriorityQueue = [30, 20]

保留 PriorityQueue 中字符串的所有给定元素示例

以下示例显示了使用字符串的 Java PriorityQueue retainAll() 方法的使用方法。我们正在创建一个字符串的 PriorityQueue,添加一些元素,打印它,然后使用 retainAll() 方法保留一些元素。由于 PriorityQueue 已被修改,因此会打印它以检查是否保留了指定的元素。

package com.tutorialspoint;

import java.util.PriorityQueue;
import java.util.Arrays;

public class PriorityQueueDemo {
   public static void main(String[] args) {
      
      // create an empty priority queue
      PriorityQueue<String> queue = new PriorityQueue<>();

      // use add() method to add elements in the queue
      queue.add("A");
      queue.add("B");
      queue.add("C");
      queue.add("D");        

      // let us print all the elements available in queue
      System.out.println("PriorityQueue = " + queue);

      // it will retain two common elements
      System.out.println("PriorityQueue modified:  " + queue.retainAll(Arrays.asList("E","B","C","F")));
	  
      // let us print all the elements available in queue again
      System.out.println("PriorityQueue = " + queue);
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果:

PriorityQueue = [A, B, C, D]
PriorityQueue modified:  true
PriorityQueue = [B, C]

保留 PriorityQueue 中对象的所有给定元素示例

以下示例显示了使用 Student 对象的 Java PriorityQueue retainAll() 方法的使用方法。我们正在创建一个 Student 对象的 PriorityQueue,添加一些元素,打印它,然后使用 retainAll() 方法保留一些学生。由于 PriorityQueue 已被修改,因此会打印它以检查是否保留了指定的元素。

package com.tutorialspoint;

import java.util.PriorityQueue;
import java.util.Arrays;

public class PriorityQueueDemo {
   public static void main(String[] args) {
      
      // create an empty priority queue
      PriorityQueue<Student> queue = new PriorityQueue<>();

      // use add() method to add elements in the queue
      queue.add(new Student(1, "Julie"));
      queue.add(new Student(2, "Robert"));
      queue.add(new Student(3, "Adam"));       

      // let us print all the elements available in queue
      System.out.println("PriorityQueue = " + queue);

      // it will return true after retaining two students from queue
      System.out.println("Student removed : " + queue.retainAll(
         Arrays.asList(new Student(2, "Robert"),new Student(3, "Adam"))));
	  
      // let us print all the elements available in queue again
      System.out.println("PriorityQueue = " + queue);
   }
}
class Student implements Comparable<Student> {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
   
   @Override
   public boolean equals(Object obj) {
      Student s = (Student)obj;
      return this.rollNo == s.rollNo && this.name.equalsIgnoreCase(s.name);
   }

   @Override
   public int compareTo(Student student) {
      return this.rollNo - student.rollNo;
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果:

PriorityQueue = [[ 1, Julie ], [ 2, Robert ], [ 3, Adam ]]
Student removed : true
PriorityQueue = [[ 2, Robert ], [ 3, Adam ]]
java_util_priorityqueue.htm
广告