//PriorityQueue using ArrayList import java.util.*; public class PriorityQueueDemo<K extends Comparable<K>, V>{ static class Entry<K extends Comparable<K>, V>{ private K key; private V value; public Entry(K key, V value){ this.key = key; this.value = value; } public K getKey(){ return this.key; } public V getValue(){ return this.value; } } private ArrayList<Entry<K,V>> list = new ArrayList<>(); public void insert(K key, V value){ Entry<K,V> entry = new Entry<>(key,value); int insertIndex = 0; for(int i=0;i<list.size();i++){ if(list.get(i).getKey().compareTo(key)>0) break; insertIndex++; } list.add(insertIndex, entry); } public K getMinKey(){ return list.get(0).getKey(); } public V getMinValue(){ return list.get(0).getValue(); } public static void main(String[] args){ PriorityQueueDemo<Integer, String> p = new PriorityQueueDemo<>(); p.insert(5,"hello"); p.insert(2,"java"); p.insert(1, "programming"); p.insert(3, "welcome"); System.out.println("Minimum Key: "+p.getMinKey()); System.out.println("Minimum Value: "+p.getMinValue()); } }