【发布时间】:2011-01-04 16:18:26
【问题描述】:
我与一个 API 交谈,该 API 为我提供了一个集合上的 java.util.Iterator。这意味着我可以迭代它,但我不能直接/随机访问元素。
现在我的问题是:我想从这个集合中获取一个随机元素。我怎么做?我想我可以建立一个允许直接访问的新集合,但这不是有点消耗内存吗?我还可以迭代整个集合,并为每个元素“掷骰子”,看看我是否应该采用该元素并退出迭代或继续。但是我需要集合的大小,而我无法从迭代器中得到它。
提前致谢。
【问题讨论】:
-
集合通常不应该是实现
Iterator的类。 -
你的收藏是
java.util.Collection吗? -
内存消耗应该不会那么大。新集合只保存指向实际数据的指针,因此新集合对象的大小!=集合的大小。
-
@Jonathan B 在病态的情况下,集合包含许多重复元素或
nulls,这可能会使集合的ArrayList相对较大。 -
@thejh 这是我拙劣的写作,谢谢提及。我已经更新了问题。