1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.sat4j.pb.tools;
21
22 import java.math.BigInteger;
23
24 public class WeightedObject<T> implements Comparable<WeightedObject<T>> {
25
26 public final T thing;
27 private BigInteger weight;
28
29 private WeightedObject(T thing, BigInteger weight) {
30 this.thing = thing;
31 this.weight = weight;
32 }
33
34 public BigInteger getWeight() {
35 return weight;
36 }
37
38 public void increaseWeight(BigInteger delta) {
39 weight = weight.add(delta);
40 }
41
42 public int compareTo(WeightedObject<T> arg0) {
43 return weight.compareTo(arg0.getWeight());
44 }
45
46 public static <E> WeightedObject<E> newWO(E e, int w) {
47 return new WeightedObject<E>(e, BigInteger.valueOf(w));
48 }
49
50 public static <E> WeightedObject<E> newWO(E e, BigInteger w) {
51 return new WeightedObject<E>(e, w);
52 }
53
54 @Override
55 public int hashCode() {
56 final int prime = 31;
57 int result = 1;
58 result = prime * result + ((thing == null) ? 0 : thing.hashCode());
59 result = prime * result + ((weight == null) ? 0 : weight.hashCode());
60 return result;
61 }
62
63 @Override
64 public boolean equals(Object obj) {
65 if (this == obj)
66 return true;
67 if (obj == null)
68 return false;
69 if (getClass() != obj.getClass())
70 return false;
71 WeightedObject<?> other = (WeightedObject<?>) obj;
72 if (thing == null) {
73 if (other.thing != null)
74 return false;
75 } else if (!thing.equals(other.thing))
76 return false;
77 if (weight == null) {
78 if (other.weight != null)
79 return false;
80 } else if (!weight.equals(other.weight))
81 return false;
82 return true;
83 }
84 }