34 public AbstractProfiledItem(T item, double probability) { 35 assert item != null; 36 assert probability >= 0.0D && probability <= 1.0D; 37 this.item = item; 38 this.probability = probability; 39 } 40 41 protected T getItem() { 42 return item; 43 } 44 45 /** 46 * Returns the estimated probability of {@link #getItem()}. 47 * 48 * @return double value ≥ 0.0 and ≤ 1.0 49 */ 50 public double getProbability() { 51 return probability; 52 } 53 54 @Override 55 public int compareTo(AbstractProfiledItem<?> o) { 56 if (getProbability() > o.getProbability()) { 57 return -1; 58 } else if (getProbability() < o.getProbability()) { 59 return 1; 60 } 61 return 0; 62 } 63 64 @Override 65 public int hashCode() { 66 final int prime = 31; 67 int result = 1; 68 long temp; 69 temp = Double.doubleToLongBits(probability); 70 result = prime * result + (int) (temp ^ (temp >>> 32)); 71 result = prime * result + item.hashCode(); 72 return result; 73 } 74 75 @Override 76 public boolean equals(Object obj) { 77 if (this == obj) { 78 return true; 79 } 80 if (obj == null) { 81 return false; | 34 public AbstractProfiledItem(T item, double probability) { 35 assert item != null; 36 assert probability >= 0.0D && probability <= 1.0D; 37 this.item = item; 38 this.probability = probability; 39 } 40 41 protected T getItem() { 42 return item; 43 } 44 45 /** 46 * Returns the estimated probability of {@link #getItem()}. 47 * 48 * @return double value ≥ 0.0 and ≤ 1.0 49 */ 50 public double getProbability() { 51 return probability; 52 } 53 54 /** 55 * Returns -1 if the {@linkplain #getProbability() probability} of this item is greater than 56 * {@code o}'s probability, 0 if there are equal otherwise 1. 57 */ 58 @Override 59 public int compareTo(AbstractProfiledItem<?> o) { 60 // Need to swap the order of operands so that higher probabilities are sorted first 61 return Double.compare(o.getProbability(), getProbability()); 62 } 63 64 @Override 65 public int hashCode() { 66 final int prime = 31; 67 int result = 1; 68 long temp; 69 temp = Double.doubleToLongBits(probability); 70 result = prime * result + (int) (temp ^ (temp >>> 32)); 71 result = prime * result + item.hashCode(); 72 return result; 73 } 74 75 @Override 76 public boolean equals(Object obj) { 77 if (this == obj) { 78 return true; 79 } 80 if (obj == null) { 81 return false; |