有没有更快的方法来生成N整数列表

时间:2013-06-10 19:14:18

标签: java

我知道这是一个非常新手的问题,但没有任何东西进入我的脑海。目前我正在尝试这一点,但对于这么大的数字来说,这是效率最低的方式。帮帮我。

int count = 66000000;
LinkedList<Integer> list = new LinkedList<Integer>();
        for (int i=1;i<=count;i++){
            list.add(i);
            //System.out.println(i);
        }

修改

实际上我已经在整个列表(队列)上重复执行操作(比如在一个条件下删除一些元素并再次添加),所以不得不迭代整个列表变得如此缓慢,使用这样的数字花了超过10分钟。

3 个答案:

答案 0 :(得分:8)

输出的大小为 O(n)因此,无法使用比 O(n)时间复杂度更高效的填充列表的算法。

你花了很多时间将数字打印到屏幕上,而不是实际花费在生成列表上。如果您真的想加快此代码的速度,请删除

System.out.println(i);

另外,我注意到你正在使用LinkedList,如果你使用了一个数组(或基于数组的列表),它应该更快。

答案 1 :(得分:3)

您可以实现List,其中get(int index)方法只返回索引(或基于索引的某个值)。然后,列表的创建将是恒定时间(O(1))。该列表必须是不可变的。

答案 2 :(得分:0)

您的问题不仅仅是构建列表,还包括删除和重新插入。我怀疑你应该使用HashSet,甚至可能是BitSet而不是任何类型的List。