Migrated from old fork (#15626)
This commit is contained in:
parent
85c4162119
commit
a662e499b9
|
@ -0,0 +1,36 @@
|
||||||
|
package com.baeldung.priorityqueueiterator;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
|
||||||
|
public class Person {
|
||||||
|
String name;
|
||||||
|
int age;
|
||||||
|
|
||||||
|
public Person(String name, int age) {
|
||||||
|
this.name = name;
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAge() {
|
||||||
|
return age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAge(int age) {
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class PersonAgeComparator implements Comparator<Person> {
|
||||||
|
@Override
|
||||||
|
public int compare(Person p1, Person p2) {
|
||||||
|
return p1.age - p2.age; // Ascending order
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
package com.baeldung.priorityqueueiterator;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.PriorityQueue;
|
||||||
|
|
||||||
|
public class PriorityQueueMain {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
showPriorityQueueWithIterator();
|
||||||
|
showCustomOrderingWithIterator();
|
||||||
|
showCustomOrderingWithPoll();
|
||||||
|
useIteratorToCapitalizeNames();
|
||||||
|
showFailFastIteratorBehavior();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void showPriorityQueueWithIterator() {
|
||||||
|
PriorityQueue<Integer> queue = new PriorityQueue<>();
|
||||||
|
queue.add(3);
|
||||||
|
queue.add(1);
|
||||||
|
queue.add(2);
|
||||||
|
|
||||||
|
Iterator<Integer> iterator = queue.iterator();
|
||||||
|
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Integer element = iterator.next();
|
||||||
|
System.out.println(element);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void showFailFastIteratorBehavior() {
|
||||||
|
PriorityQueue<Integer> numbers = new PriorityQueue<>();
|
||||||
|
numbers.add(3);
|
||||||
|
numbers.add(1);
|
||||||
|
numbers.add(2);
|
||||||
|
|
||||||
|
Iterator<Integer> iterator = numbers.iterator();
|
||||||
|
numbers.add(4);
|
||||||
|
|
||||||
|
try {
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
System.out.println(iterator.next());
|
||||||
|
}
|
||||||
|
} catch (java.util.ConcurrentModificationException e) {
|
||||||
|
System.out.println("ConcurrentModificationException occurred during iteration.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void showCustomOrderingWithIterator() {
|
||||||
|
// Creating a PriorityQueue with a custom comparator
|
||||||
|
PriorityQueue<Person> priorityQueue = new PriorityQueue<>(new PersonAgeComparator());
|
||||||
|
|
||||||
|
// Adding persons to the PriorityQueue
|
||||||
|
priorityQueue.add(new Person("Alice", 25));
|
||||||
|
priorityQueue.add(new Person("Bob", 30));
|
||||||
|
priorityQueue.add(new Person("Charlie", 22));
|
||||||
|
|
||||||
|
Iterator<Person> iterator = priorityQueue.iterator();
|
||||||
|
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Person person = iterator.next();
|
||||||
|
System.out.println("Name: " + person.name + ", Age: " + person.age);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void showCustomOrderingWithPoll() {
|
||||||
|
PriorityQueue<Person> priorityQueue = new PriorityQueue<>(new PersonAgeComparator());
|
||||||
|
|
||||||
|
priorityQueue.add(new Person("Alice", 25));
|
||||||
|
priorityQueue.add(new Person("Bob", 30));
|
||||||
|
priorityQueue.add(new Person("Charlie", 22));
|
||||||
|
|
||||||
|
Iterator<Person> iterator = priorityQueue.iterator();
|
||||||
|
|
||||||
|
while (!priorityQueue.isEmpty()) {
|
||||||
|
Person person = priorityQueue.poll();
|
||||||
|
System.out.println("Name: " + person.name + ", Age: " + person.age);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void useIteratorToCapitalizeNames() {
|
||||||
|
PriorityQueue<Person> priorityQueue = new PriorityQueue<>(new PersonAgeComparator());
|
||||||
|
|
||||||
|
priorityQueue.add(new Person("Alice", 25));
|
||||||
|
priorityQueue.add(new Person("Bob", 30));
|
||||||
|
priorityQueue.add(new Person("Charlie", 22));
|
||||||
|
|
||||||
|
Iterator<Person> iterator = priorityQueue.iterator();
|
||||||
|
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Person person = iterator.next();
|
||||||
|
person.setName(person.getName()
|
||||||
|
.toUpperCase());
|
||||||
|
System.out.println("Name: " + person.name + ", Age: " + person.age);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue