--- old/src/share/classes/javax/imageio/spi/PartiallyOrderedSet.java 2014-02-20 19:52:19.338308744 -0800 +++ new/src/share/classes/javax/imageio/spi/PartiallyOrderedSet.java 2014-02-20 19:52:19.184975405 -0800 @@ -51,17 +51,17 @@ * supplied by a trusted vendor over those supplied by another. * */ -class PartiallyOrderedSet extends AbstractSet { +class PartiallyOrderedSet extends AbstractSet { // The topological sort (roughly) follows the algorithm described in // Horowitz and Sahni, _Fundamentals of Data Structures_ (1976), // p. 315. // Maps Objects to DigraphNodes that contain them - private Map poNodes = new HashMap(); + private Map> poNodes = new HashMap<>(); // The set of Objects - private Set nodes = poNodes.keySet(); + private Set nodes = poNodes.keySet(); /** * Constructs a PartiallyOrderedSet. @@ -81,20 +81,20 @@ * collection, with an ordering that respects the orderings set * by the setOrdering method. */ - public Iterator iterator() { - return new PartialOrderIterator(poNodes.values().iterator()); + public Iterator iterator() { + return new PartialOrderIterator<>(poNodes.values().iterator()); } /** * Adds an Object to this * PartiallyOrderedSet. */ - public boolean add(Object o) { + public boolean add(E o) { if (nodes.contains(o)) { return false; } - DigraphNode node = new DigraphNode(o); + DigraphNode node = new DigraphNode<>(o); poNodes.put(o, node); return true; } @@ -104,7 +104,7 @@ * PartiallyOrderedSet. */ public boolean remove(Object o) { - DigraphNode node = (DigraphNode)poNodes.get(o); + DigraphNode node = poNodes.get(o); if (node == null) { return false; } @@ -127,11 +127,9 @@ * @return true if no prior ordering existed * between the nodes, falseotherwise. */ - public boolean setOrdering(Object first, Object second) { - DigraphNode firstPONode = - (DigraphNode)poNodes.get(first); - DigraphNode secondPONode = - (DigraphNode)poNodes.get(second); + public boolean setOrdering(E first, E second) { + DigraphNode firstPONode = poNodes.get(first); + DigraphNode secondPONode = poNodes.get(second); secondPONode.removeEdge(firstPONode); return firstPONode.addEdge(secondPONode); @@ -142,11 +140,9 @@ * * @return true if a prior prefence existed between the nodes. */ - public boolean unsetOrdering(Object first, Object second) { - DigraphNode firstPONode = - (DigraphNode)poNodes.get(first); - DigraphNode secondPONode = - (DigraphNode)poNodes.get(second); + public boolean unsetOrdering(E first, E second) { + DigraphNode firstPONode = poNodes.get(first); + DigraphNode secondPONode = poNodes.get(second); return firstPONode.removeEdge(secondPONode) || secondPONode.removeEdge(firstPONode); @@ -156,25 +152,23 @@ * Returns true if an ordering exists between two * nodes. */ - public boolean hasOrdering(Object preferred, Object other) { - DigraphNode preferredPONode = - (DigraphNode)poNodes.get(preferred); - DigraphNode otherPONode = - (DigraphNode)poNodes.get(other); + public boolean hasOrdering(E preferred, E other) { + DigraphNode preferredPONode = poNodes.get(preferred); + DigraphNode otherPONode = poNodes.get(other); return preferredPONode.hasEdge(otherPONode); } } -class PartialOrderIterator implements Iterator { +class PartialOrderIterator implements Iterator { - LinkedList zeroList = new LinkedList(); - Map inDegrees = new HashMap(); // DigraphNode -> Integer + LinkedList> zeroList = new LinkedList<>(); + Map, Integer> inDegrees = new HashMap<>(); - public PartialOrderIterator(Iterator iter) { + public PartialOrderIterator(Iterator> iter) { // Initialize scratch in-degree values, zero list while (iter.hasNext()) { - DigraphNode node = (DigraphNode)iter.next(); + DigraphNode node = iter.next(); int inDegree = node.getInDegree(); inDegrees.put(node, new Integer(inDegree)); @@ -189,14 +183,14 @@ return !zeroList.isEmpty(); } - public Object next() { - DigraphNode first = (DigraphNode)zeroList.removeFirst(); + public E next() { + DigraphNode first = zeroList.removeFirst(); // For each out node of the output node, decrement its in-degree - Iterator outNodes = first.getOutNodes(); + Iterator> outNodes = first.getOutNodes(); while (outNodes.hasNext()) { - DigraphNode node = (DigraphNode)outNodes.next(); - int inDegree = ((Integer)inDegrees.get(node)).intValue() - 1; + DigraphNode node = outNodes.next(); + int inDegree = inDegrees.get(node).intValue() - 1; inDegrees.put(node, new Integer(inDegree)); // If the in-degree has fallen to 0, place the node on the list