Java权重算法

2018-04-26  本文已影响0人  茶瓯
private T randomKey(List<T> list,Random random){
   //按照权重排序
    Collections.sort(list,new Comparator<T>() {
         @Override
         public int compare(T o1, T o2) {
            if(o1.getWeight()<o2.getWeight()){
               return -1;
             }else if(o1.getWeight()>o2.getWeight()){
               return 1;
             }
             return 0;
        }
     });
   int sum = 0;
   for(T object:list){
       sum += object.getWeight();
    }
    int randomNumber = random.nextInt(sum);
    T target = null;
    for(T object:list){
         randomNumber -= object.getWeight();
        if(randomNumber <=0){
          target = object;
          break;
        }
    }
    return target;
}
上一篇 下一篇

猜你喜欢

热点阅读