【问题标题】:How to shuffle a Collection?如何洗牌一个集合?
【发布时间】:2021-08-23 00:44:01
【问题描述】:

我知道Collections.shuffle(),但它需要List。我想改组Collection

Collection<Town> towns = getAllTowns();

最好的方法是什么?

【问题讨论】:

  • 一个Collection不一定有订单。例如散列集 是集合,但没有顺序。如果它是一个没有顺序的集合,那么“洗牌”它是没有意义的,不是吗?
  • 注意,它是Collections.shuffle() 而不是Collection.shuffle(),正如您已经指出的,它只能应用于具有内在排序的事物。在 Java 中,有序集合的基数是 List&lt;&gt;

标签: java collections shuffle


【解决方案1】:

Collections 不一定可以重新排序,例如 Set。因此,您不能随机播放任意的Collection

【讨论】:

    【解决方案2】:

    这不太可能 - Collection 抽象没有定义顺序,例如集合是 Collection,并且没有在集合上定义排序,因此打乱它们没有意义。

    您应该将您的收藏转换为一个列表(如果它还不是一个列表),然后将其随机播放。另见:How to convert a Collection to List?

    【讨论】:

      猜你喜欢
      • 2013-11-30
      • 2015-12-02
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多