If we could build upon guava I could make a version of pick() that
took a Function for computing weight. That would be more useful to me, usually. The Map version could be reimplemented fairly easily with that... git-svn-id: https://samskivert.googlecode.com/svn/trunk@2921 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -211,6 +211,30 @@ public class Randoms
|
|||||||
return pick;
|
return pick;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public <T> T pick (
|
||||||
|
// Iterable<? extends T> iterable, Function<? super T, ? extends Number> weightFunction,
|
||||||
|
// T ifEmpty)
|
||||||
|
// {
|
||||||
|
// T pick = ifEmpty;
|
||||||
|
// double total = 0.0;
|
||||||
|
// for (T element : iterable) {
|
||||||
|
// double weight = weightFunction.apply(element).doubleValue();
|
||||||
|
// // The rest is like the current pick(Map)
|
||||||
|
// }
|
||||||
|
// return pick;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public <T> T pick (Map<? extends T, ? extends Number> weightMap, T ifEmpty)
|
||||||
|
// {
|
||||||
|
// Map.Entry<? extends T, ? extends Number> pick = pick(weightMap.entrySet(),
|
||||||
|
// new Function<Map.Entry<?, ? extends Number>, Number>() {
|
||||||
|
// public Number apply (Map.Entry<?, ? extends Number> entry) {
|
||||||
|
// return entry.getValue();
|
||||||
|
// }
|
||||||
|
// }, null);
|
||||||
|
// return (pick != null) ? pick.getKey() : ifEmpty;
|
||||||
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pluck (remove) a random element from the specified Iterable, or return <code>ifEmpty</code>
|
* Pluck (remove) a random element from the specified Iterable, or return <code>ifEmpty</code>
|
||||||
* if it is empty.
|
* if it is empty.
|
||||||
|
|||||||
Reference in New Issue
Block a user