【发布时间】:2011-08-05 20:27:51
【问题描述】:
我有一个 List 的对象,这个列表可能包含数千个元素。
我想获得其中的 10、20、34、56(无论用户选择什么大小的部分)子集,这个子集必须是随机选择的,我不能有重复。
Collections.shuffle() 对于大型 POJO 列表是否足够?还是有更有效/更安全的方法?
以我的例子为例,如果 myStrings 有 50,000 个字符串,如果您只需要 5 个项目,那么调用 Collections.shuffle() 是个好主意吗?
public class ShuffleMe
{
public static void main(String[] args)
{
int NUM_OF_ELEMENTS_TO_PICK = 3;
List<String> myStrings = new ArrayList<String>();
myStrings.add("A");
myStrings.add("B");
myStrings.add("C");
myStrings.add("D");
myStrings.add("E");
myStrings.add("F");
Collections.shuffle(myStrings);
for (int i = 0; i < NUM_OF_ELEMENTS_TO_PICK; i++)
{
System.out.println(myStrings.get(i));
}
}
}
【问题讨论】:
-
您能否澄清一下,用户选择的是单个子集的大小,还是要生成的子集的数量?如果是后者,子集的大小应该是多少?
-
我不想使用
Collections.sort()的原因是因为我不想从数据库调用中检索所有项目,如果我只实际使用其中的几个,这会改变任何答案吗?
标签: java collections