ProportionalSelector
按权重以指定概率/比例的方式获取元素的Java实现工具类。
Get Started
//使用简单的候选对象
SimpleCandidate c1 = new SimpleCandidate("service1", 1);
SimpleCandidate c2 = new SimpleCandidate("service2", 2);
SimpleCandidate c3 = new SimpleCandidate("service3", 3);
SimpleCandidate c4 = new SimpleCandidate("service4", 4);
List testCandidates = Arrays.asList(c1, c2, c3, c4);
ProportionalSelector selector = new ProportionalSelector<>(testCandidates);
for (int i=0 ;i < 20; i++) {
System.out.println(selector.chooseOne());
System.out.println(selector.choose(2));
}
输出:
SimpleCandidate{weight=3, id='service3'}
[SimpleCandidate{weight=3, id='service3'}, SimpleCandidate{weight=2, id='service2'}]
SimpleCandidate{weight=2, id='service2'}
[SimpleCandidate{weight=4, id='service4'}, SimpleCandidate{weight=2, id='service2'}]
SimpleCandidate{weight=4, id='service4'}
[SimpleCandidate{weight=4, id='service4'}, SimpleCandidate{weight=2, id='service2'}]
SimpleC