使用Treemap进行一次数据的随机选举

1.根据数据的最后一次使用时间和现在时间的时间差作为权重并进行分配

int a = (int) coverPlate.getLastUseTime().getTime();
int b = (int) now.getTime();
int c = (b - a) / 1000;
map.put(c, coverPlate.getSeqId());

2.分配并随机选中的工具类

    public String getRandomValue(Map<Integer, String> map) {
        NavigableMap<Integer, String> treeMap = new TreeMap<>();
        int total = 0;
        List<Integer> list = new ArrayList<>(map.keySet());
        for (Integer integer : list) {
            total += integer;
            treeMap.put(total, map.get(integer));
        }
        Random random =new Random();
        int weight = random.nextInt(total);
        return treeMap.ceilingEntry(weight).getValue();
    }

 

posted @ 2019-12-06 16:00  MyFist  阅读(216)  评论(0)    收藏  举报