src/share/classes/javax/imageio/spi/PartiallyOrderedSet.java
Print this page
rev 9345 : 8035487: Fix raw and unchecked lint warnings in javax.imageio.spi
Reviewed-by:
@@ -49,21 +49,21 @@
* service provider registry situation, an application might allow the
* user to set a preference order for service provider objects
* supplied by a trusted vendor over those supplied by another.
*
*/
-class PartiallyOrderedSet extends AbstractSet {
+class PartiallyOrderedSet<E> extends AbstractSet<E> {
// 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<E, DigraphNode<E>> poNodes = new HashMap<>();
// The set of Objects
- private Set nodes = poNodes.keySet();
+ private Set<E> nodes = poNodes.keySet();
/**
* Constructs a <code>PartiallyOrderedSet</code>.
*/
public PartiallyOrderedSet() {}
@@ -79,34 +79,34 @@
/**
* Returns an iterator over the elements contained in this
* collection, with an ordering that respects the orderings set
* by the <code>setOrdering</code> method.
*/
- public Iterator iterator() {
- return new PartialOrderIterator(poNodes.values().iterator());
+ public Iterator<E> iterator() {
+ return new PartialOrderIterator<>(poNodes.values().iterator());
}
/**
* Adds an <code>Object</code> to this
* <code>PartiallyOrderedSet</code>.
*/
- public boolean add(Object o) {
+ public boolean add(E o) {
if (nodes.contains(o)) {
return false;
}
- DigraphNode node = new DigraphNode(o);
+ DigraphNode<E> node = new DigraphNode<>(o);
poNodes.put(o, node);
return true;
}
/**
* Removes an <code>Object</code> from this
* <code>PartiallyOrderedSet</code>.
*/
public boolean remove(Object o) {
- DigraphNode node = (DigraphNode)poNodes.get(o);
+ DigraphNode<E> node = poNodes.get(o);
if (node == null) {
return false;
}
poNodes.remove(o);
@@ -125,58 +125,52 @@
* between the nodes in the opposite order, it is removed.
*
* @return <code>true</code> if no prior ordering existed
* between the nodes, <code>false</code>otherwise.
*/
- 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<E> firstPONode = poNodes.get(first);
+ DigraphNode<E> secondPONode = poNodes.get(second);
secondPONode.removeEdge(firstPONode);
return firstPONode.addEdge(secondPONode);
}
/**
* Removes any ordering between two nodes.
*
* @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<E> firstPONode = poNodes.get(first);
+ DigraphNode<E> secondPONode = poNodes.get(second);
return firstPONode.removeEdge(secondPONode) ||
secondPONode.removeEdge(firstPONode);
}
/**
* Returns <code>true</code> 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<E> preferredPONode = poNodes.get(preferred);
+ DigraphNode<E> otherPONode = poNodes.get(other);
return preferredPONode.hasEdge(otherPONode);
}
}
-class PartialOrderIterator implements Iterator {
+class PartialOrderIterator<E> implements Iterator<E> {
- LinkedList zeroList = new LinkedList();
- Map inDegrees = new HashMap(); // DigraphNode -> Integer
+ LinkedList<DigraphNode<E>> zeroList = new LinkedList<>();
+ Map<DigraphNode<E>, Integer> inDegrees = new HashMap<>();
- public PartialOrderIterator(Iterator iter) {
+ public PartialOrderIterator(Iterator<DigraphNode<E>> iter) {
// Initialize scratch in-degree values, zero list
while (iter.hasNext()) {
- DigraphNode node = (DigraphNode)iter.next();
+ DigraphNode<E> node = iter.next();
int inDegree = node.getInDegree();
inDegrees.put(node, new Integer(inDegree));
// Add nodes with zero in-degree to the zero list
if (inDegree == 0) {
@@ -187,18 +181,18 @@
public boolean hasNext() {
return !zeroList.isEmpty();
}
- public Object next() {
- DigraphNode first = (DigraphNode)zeroList.removeFirst();
+ public E next() {
+ DigraphNode<E> first = zeroList.removeFirst();
// For each out node of the output node, decrement its in-degree
- Iterator outNodes = first.getOutNodes();
+ Iterator<DigraphNode<E>> outNodes = first.getOutNodes();
while (outNodes.hasNext()) {
- DigraphNode node = (DigraphNode)outNodes.next();
- int inDegree = ((Integer)inDegrees.get(node)).intValue() - 1;
+ DigraphNode<E> 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
if (inDegree == 0) {
zeroList.add(node);