java 从几十万条数据的list集合中随机取出1000个元素重新生成集合?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 从几十万条数据的list集合中随机取出1000个元素重新生成集合?相关的知识,希望对你有一定的参考价值。

java 从几十万条数据的list集合中随机取出1000个元素重新生成集合,要求速度比较快。

参考技术A List<String> list = new ArrayList<String>();
List<String> new_list = new ArrayList<String>();
for (int i = 0 ; i < 1200000;i++)

list.add(i+"");

long time1 = System.currentTimeMillis();
Collections.shuffle(list);
new_list = list.subList(0,1000);//方法1耗时65~130
new_list = createRandomList(list,1000);//方法2耗时2~5
long time2 = System.currentTimeMillis();
System.out.println(time2 - time1);

private static List createRandomList(List list, int n)

Map map = new HashMap();
List listNew = new ArrayList();
if (list.size() <= n)

return list;

else

while (map.size() < n)

int random = (int) (Math.random() * list.size());
if (!map.containsKey(random))

map.put(random, "");
listNew.add(list.get(random));


return listNew;



这个方法测试
参考技术B package test2;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

public class test2_test1
static HashSet<Object> hashSet1 = new HashSet<>();
static List<Object> list = new ArrayList<>();

static HashSet<Integer> getObject(int i)
HashSet<Integer> hashSet = new HashSet<>(i);
int random = (int)Math.random() * list.size();
while (hashSet.size() < i)
hashSet.add(random);
random = (int)Math.random() * list.size();

return hashSet;

//获取指定范围内无重复数字(list索引)

static void addObject(int i1)
for (int i : getObject(i1))
hashSet1.add(list.get(i));


//获取hashset的值以获取list的指定索引位置值,将该值添加到新的集合中

public static void main(String[] args)
addObject(1000);

以上是关于java 从几十万条数据的list集合中随机取出1000个元素重新生成集合?的主要内容,如果未能解决你的问题,请参考以下文章

实现java 中 list集合中有几十万条数据,每100条为一组取出

java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!

java 从List中随机取出一个元素

怎样从java集合类set中取出数据?

怎样从java集合类set中取出数据

如何从Java List中取出前100的数据并且删除掉?