![](/img/trans.png)
[英]Is there a way to get the last element of a list faster than O(n) in Java?
[英]is there any faster way to generate List of N integer
我知道这是一个非常新手的问题,但没有任何东西进入我的脑海。 目前我正在尝试这一点,但对于这么大的数字来说,这是效率最低的方式。 帮帮我。
int count = 66000000;
LinkedList<Integer> list = new LinkedList<Integer>();
for (int i=1;i<=count;i++){
list.add(i);
//System.out.println(i);
}
编辑:
实际上我已经对整个列表(队列)重复执行操作(比如在一个条件下删除一些元素并再次添加),所以不得不迭代整个列表变得如此慢,用这样的数字花了超过10分钟。
输出的大小是O(n)因此,使用填充列表的算法几乎不可能比O(n)时间复杂度更有效。
你花了很多时间将数字打印到屏幕上,而不是实际用于生成列表。 如果你真的想加速这段代码,请删除
System.out.println(i);
另外,我注意到你正在使用LinkedList
,如果你使用了一个数组(或基于数组的列表),它应该更快。
您可以实现一个List
,其中get(int index)
方法只返回索引(或基于索引的某个值)。 然后,列表的创建将是恒定时间(O(1))。 该列表必须是不可变的。
您的问题不仅仅是构建列表,还包括删除和重新插入。 我怀疑你应该使用HashSet,甚至可能是BitSet而不是任何类型的List。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.