Java PriorityQueue removeIf() 方法



描述

java PriorityQueue removeIf() 方法檢索並移除此佇列中滿足給定謂詞的所有元素。如果發生異常,則將異常轉發給呼叫方。

宣告

以下是 java.util.PriorityQueue.removeIf(filter) 方法的宣告

public boolean removeIf​(Predicate<? super E> filter)

引數

filter - 一個謂詞,對於要移除的元素返回 true。

返回值

如果移除了任何元素,則返回 true。

異常

NullPointerException - 如果指定的過濾器為 null。

基於條件在 PriorityQueue 中移除整數元素示例

以下示例演示了使用 Java PriorityQueue removeIf(filter) 方法處理整數的情況。我們建立一個整數型別的 PriorityQueue,新增一些元素,列印它,然後使用 removeIf(filter) 方法移除偶數。由於 PriorityQueue 被修改,因此列印它以檢查是否移除了偶數。

package com.tutorialspoint;

import java.util.PriorityQueue;

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(1);
      queue.add(2);
      queue.add(3);
      queue.add(4);
      queue.add(5);	  

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

      // it will remove even numbers from the queue
      queue.removeIf(i -> i%2 == 0);
	  
      // let us print all the elements available in queue again
      System.out.println("PriorityQueue = " + queue);
   }
}

輸出

讓我們編譯並執行以上程式,這將產生以下結果:

PriorityQueue = [1, 2, 3, 4, 5]
PriorityQueue = [1, 3, 5]

基於條件在 PriorityQueue 中移除字串元素示例

以下示例演示了使用 Java PriorityQueue removeIf(filter) 方法處理字串的情況。我們建立一個字串型別的 PriorityQueue,新增一些元素,列印它,然後使用 removeIf(filter) 方法移除僅包含一個字元的字串。由於 PriorityQueue 被修改,因此列印它以檢查是否移除了此類元素。

package com.tutorialspoint;

import java.util.PriorityQueue;

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("BB");
      queue.add("CC");
      queue.add("D");        

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

      // it will remove single length string
      queue.removeIf(i -> i.length() == 1);
	  
      // let us print all the elements available in queue again
      System.out.println("PriorityQueue = " + queue);
   }
}

輸出

讓我們編譯並執行以上程式,這將產生以下結果:

PriorityQueue = [A, BB, CC, D]
PriorityQueue = [BB, CC]

基於條件在 PriorityQueue 中移除物件元素示例

以下示例演示了使用 Java PriorityQueue removeIf(filter) 方法處理 Student 物件的情況。我們建立一個 Student 物件型別的 PriorityQueue,新增一些元素,列印它,然後使用 removeIf(filter) 方法移除特定學生。由於 PriorityQueue 被修改,因此列印它以檢查該學生物件是否已被移除。

package com.tutorialspoint;

import java.util.PriorityQueue;

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 remove if roll no is 2
      queue.removeIf(i -> i.rollNo == 2);
	  
      // 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 ]]
PriorityQueue = [[ 1, Julie ], [ 3, Adam ]]
java_util_priorityqueue.htm
廣告