我必须创建一个包含 n 个元素的大列表(最多 100,000 个)。列表中的每个元素都是一个与列表索引等效的整数。在此之后,我必须在此列表上调用 Collections.shuffle。我的问题是,应该使用哪个列表实现(java 集合或 apache 集合)。我的直觉是 ArrayList 可以在这里很好地使用。所有的想法都值得赞赏。谢谢!
感谢您的投入。我想我坚持使用 ArrayList。我目前正在使用带有 initialCapacity 参数的 ArrayList 构造函数,并且我传递了列表的大小。因此,如果原始列表是 100000,我使用 new ArrayList(100000); 创建这个新列表;因此,我认为我没有创建数组并执行 asList,因为不会有任何调整大小。此外,像 GrowthList 和 LazyList 这样的大多数 apache 集合列表都没有实现 RandomAccess。这肯定会减慢 shuffle(根据 javadocs)。FastArrayList 确实实现了 RandomAccess,但 apache 有一个关于这个类的注释说“这个类不是跨平台的。使用它可能会在某些架构上导致意外失败”。