gpt4 book ai didi

Java - 从 HashMap 中选择一个随机值,但指定的整数最大

转载 作者:行者123 更新时间:2023-11-30 08:08:31 32 4
gpt4 key购买 nike

我想从 HashMap 中选择一个随机值,但它必须分配有最高的值。例如,我想从这个列表中随机选择一个人,但前提是他们每个人都有最多的“票”。示例:

  • 约翰 - 10
  • 亚历克斯 - 10
  • 大卫 - 5
  • 艾伦 - 10

从这个列表中,我想随机选择一个拥有最多“门票”的人。所以在本例中,它将来自 John、Alex 或 Alan。

到目前为止我有这个:

HashMap<UUID, Integer> tickets = new HashMap<UUID, Integer>();

其中 UUID 是上例中人员的姓名,Integer 是他们的门票金额。

最佳答案

您将需要一张 Map<Integer, List<UUID>> 类型的 map 。使用 SortedMap<K, V> ,默认情况下,您的 key 将按其自然顺序排序。由于您正在使用 Integer对于键,您不需要任何特殊逻辑来强制排序。

然后你只需要生成一个0到list.size() - 1之间的随机数为 map 中最高的键。要获得最高 key ,您需要构造一个 TreeSet<T> map keySet 中的实例。然后您可以使用last()获取最高的 key ,然后您可以检索该 key 的 UUID 列表。

您可以轻松创建排序 map ,如下所示:

Map<Integer, List<UUID>> map = new SortedMap<>();

那么你只需要创建一个 TreeSet<Integer>来自您的 keySet 的实例像这样:

TreeSet<Integer> sortedKeySet = new TreeSet<>(map.keySet());

之后,您可以获得最高的 key 以及关联的 UUID 列表,如下所示:

Integer highestKey = sortedKeySet.last();
List<UUID> usersWithHigestKey = map.get(highestKey);

然后你只需要生成一个 0 之间的随机数和usersWithHighestKey.size() (独家)获得具有最高值(value)的随机用户。

关于Java - 从 HashMap 中选择一个随机值,但指定的整数最大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30737475/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com