equivalent-exchange-3/common/com/pahimar/ee3/emc/graph/WeightedEdge.java
2013-09-10 16:09:11 -04:00

60 lines
1.4 KiB
Java

package com.pahimar.ee3.emc.graph;
public class WeightedEdge<T> implements Comparable<WeightedEdge<T>> {
public final float weight;
public final T target;
public WeightedEdge(T target) {
this(target, 1);
}
public WeightedEdge(T target, float weight) {
this.weight = weight;
this.target = target;
}
@Override
public boolean equals(Object object) {
if (!(object instanceof WeightedEdge<?>)) {
return false;
}
WeightedEdge<?> edge = (WeightedEdge<?>) object;
return (Float.compare(this.weight, edge.weight) == 0) && target.equals(edge.target);
}
/*
* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(WeightedEdge<T> weightedEdge) {
if (weightedEdge instanceof WeightedEdge) {
if (Float.compare(this.weight, weightedEdge.weight) == 0) {
return (this.target.hashCode() - weightedEdge.target.hashCode());
}
else {
return Float.compare(this.weight, weightedEdge.weight);
}
}
else {
return 1;
}
}
@Override
public String toString() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(String.format("Target: %s, Weight: %s", target, weight));
return stringBuilder.toString();
}
}