【问题标题】:Keeping track of multiple arraylists跟踪多个数组列表
【发布时间】:2016-12-29 08:53:52
【问题描述】:

我遇到的问题时不时出现,这很烦人。

我有两个数组列表:
* 一个跟踪名称
* 一个跟踪这些名称使用次数的“计数器”

问题: “连接”到每个名称的计数器可以不同。我想选择连接到它们的计数器最低的 6 个名称。如果有 7 个或更多名称连接到它们的最低计数器,我该如何做到这一点,同时保持随机选择?

有关信息: 这两个数组列表通过使用相同的随机种子进行混洗来“连接”。 它们被随机洗牌的原因是因为对于第一次平局(5 次平局 - 每天 1 次),每个人都从计数 0 开始。通过洗牌数组列表,我可以确保选择是随机的。

我希望这对你有意义。如果我的描述措辞不当或者您在理解某些内容时遇到问题,请询问:)

【问题讨论】:

  • 如果你包含一些代码可能会更清楚。
  • 不要将相关数据保存在两个单独的对象中,而是将其放在一个对象中。这就是面向对象编程的工作原理。创建一个具有名称字段和计数器字段的类,并创建该类的实例数组。您将需要一个比较器,可能还需要 hashCode()equals() 实现,具体取决于您要使用它的集合。但从将所有相关数据放在一起开始。
  • 我会尝试这样做 :) 谢谢!

标签: java arrays sorting arraylist


【解决方案1】:

不要使用多个数组,使用像CountedName 这样的类来存储名称和计数器。然后,您可以使用自定义比较器简单地对这些 countedNames 的数组进行排序,该比较器根据存储的 count 进行排序。

【讨论】:

  • 啊,这很有道理。我会想办法试试这个:) 谢谢!
【解决方案2】:

与其创建两个单独的数组/列表,您可以维护一个哈希图,将名称存储为键并将计数存储为值,并且您可以提供自定义逻辑来相应地递增/递减计数器。

【讨论】:

    【解决方案3】:

    您可以创建一个包含名称和计数器作为变量的对象(类)。然后,您将这些对象存储在一个数组中,您可以根据需要随机播放。

    【讨论】:

      猜你喜欢
      • 2017-03-08
      • 1970-01-01
      • 2017-05-15
      • 2014-08-09
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 2016-04-15
      相关资源
      最近更新 更多