@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; }
/** * Вернет один из елементов или 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; }
public synchronized void clear() { total_weight = 0; values.clear(); weights.clear(); }
public synchronized void add(E value, int weight) { if (value == null || weight <= 0) return; total_weight += weight; values.add(value); weights.add(total_weight); }