gpt4 book ai didi

java - 在 Java 中没有重复且随机顺序的集合

转载 作者:搜寻专家 更新时间:2023-11-01 02:49:11 25 4
gpt4 key购买 nike

看起来我既不能使用 ArrayList 也不能​​使用 Set:

  • Set<> - 我可以使用集合避免重复,但没有随机选项//Collections.shuffle(List<?> list)

  • ArrayList<> - 我可以使用随机播放来随机化列表,但允许重复。

我可以使用 Set并将其转换为 ArrayList (或相反)以避免重复。或者,循环遍历集合以随机化项目。但我正在寻找更高效的方法。

最佳答案

您可以维护两个单独的集合,一个ArrayList 和一个HashSet,并拒绝插入HashSet 中存在的任何项目。

如果您关心封装,将两个集合包装在一个实现 List 的元对象中,并仔细记录重复元素的插入将被拒绝,即使如果List的总契约(Contract)没有这样规定。

谈到这个解决方案的成本,我相信如果与普通的 ArrayList 相比,就时间而言,成本绝对可以忽略不计:HashSet 上的大多数操作成本摊销 O(1),即查找和插入。另一方面,你的内存使用量将是两倍(或更多,取决于 HashSet 负载因子)。

关于java - 在 Java 中没有重复且随机顺序的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14893083/

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