예제 #1
0
 @Override
 public synchronized String toString() {
   String ret = "";
   for (int i = 0; i < weights.size(); i++)
     ret += values.get(i).toString() + " - " + weights.get(i) + "\r\n";
   return ret;
 }
예제 #2
0
 /**
  * Вернет один из елементов или null, null возможен только если сумма весов всех елементов меньше
  * max_weight
  */
 public synchronized E chance(int max_weight) {
   if (total_weight == 0) return null;
   int r = Rnd.get(max_weight);
   for (int i = 0; i < weights.size(); i++) if (weights.get(i) > r) return values.get(i);
   return null;
 }
예제 #3
0
 public synchronized void clear() {
   total_weight = 0;
   values.clear();
   weights.clear();
 }
예제 #4
0
 public synchronized void add(E value, int weight) {
   if (value == null || weight <= 0) return;
   total_weight += weight;
   values.add(value);
   weights.add(total_weight);
 }