1、场景
在进行统计时,需要随机从一个集合中获取一些元素子集合。
2、实现
使用Collections.shuffle方法来获取一个数组的子序列。具体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
public class RadomTest { public static void main(String[] args) { RadomTest test = new RadomTest(); test.test(); } public void test() { List<Long> list = Lists.newArrayList(); for (int i = 0; i < 10; i++) list.add(new Long(i)); System.out.println("litst:"); System.out.println(list); List<Long> randdomResult = getRandomUsers(list, 5); System.out.println("获取随机子序列"); System.out.println(randdomResult); } private List<Long> getRandomUsers(List<Long> userIdsAll, int randomSize) { if (userIdsAll.size() <= randomSize) { return userIdsAll; } // 对数组随机排列 Collections.shuffle(userIdsAll); // 每个分段随机取一个用户 List<Long> randoms = Lists.newArrayList(); for (int i = 0; i < randomSize; i++) { randoms.add(userIdsAll.get(i)); } userIdsAll.clear(); return randoms; } } |