T
- the supplied typepublic class WeightedSupplier<T> extends Object implements Supplier<T>
Supplier
that randomly delegates to one of several (sub-)suppliers.
Each sub-supplier is assigned a weight, which determines the probability of it being chosen
upon calls to get()
.
The add(Object, int)
and add(Supplier, int)
methods return a reference to this
,
so calls can be chained.
Usage example:
Supplier<String> mySupplier = ...;
String str = new WeightedSupplier<String>()
.add("foo", 5)
.add(mySupplier, 10)
.get();
With a one-third chance, the value "foo"
will be assigned to str
. Otherwise (i.e.,
with a two-thirds chance), the result of mySupplier.get()
will be assigned to str
. Note
that in the former case, mySupplier.get()
will not even be invoked.Constructor and Description |
---|
WeightedSupplier() |
WeightedSupplier(Random random) |
Modifier and Type | Method and Description |
---|---|
WeightedSupplier<T> |
add(Supplier<? extends T> supplier,
int weight)
Adds a sub-supplier with a given weight.
|
WeightedSupplier<T> |
add(T obj,
int weight)
Adds an object to be supplied with a given weight.
|
T |
get() |
public WeightedSupplier()
public WeightedSupplier(Random random)
public WeightedSupplier<T> add(T obj, int weight)
obj
- the object to be suppliedweight
- the weightthis
public WeightedSupplier<T> add(Supplier<? extends T> supplier, int weight)
supplier
- the sub-supplierweight
- the weightthis
Copyright © 2015. All rights reserved.