001    package aima.search.nodestore;
002    
003    import java.util.Comparator;
004    import java.util.List;
005    import java.util.PriorityQueue;
006    
007    import aima.search.framework.Node;
008    import aima.search.framework.NodeStore;
009    
010    /**
011     * @author Ravi Mohan
012     * 
013     */
014    
015    public class PriorityNodeStore implements NodeStore {
016    
017            PriorityQueue<Node> queue;
018    
019            public PriorityNodeStore(Comparator<Node> comparator) {
020    
021                    queue = new PriorityQueue<Node>(5, comparator);
022                    // queue = new PriorityQueue(comparator);
023            }
024    
025            public void add(Node anItem) {
026    
027                    queue.add(anItem);
028            }
029    
030            public Node remove() {
031    
032                    return queue.remove();
033            }
034    
035            public void add(List<Node> nodes) {
036                    for (Object n : nodes) {
037                            queue.add((Node) n);
038                    }
039    
040            }
041    
042            public boolean isEmpty() {
043    
044                    return queue.isEmpty();
045            }
046    
047            public int size() {
048                    return queue.size();
049            }
050    
051            @Override
052            public String toString() {
053                    return queue.toString();
054            }
055    
056    }