Java List.SubList()性能比较
我需要实现滑过一个序列的滑动窗口。 (1:[0,1,2,3] 2:[1,2,3,4],...) 哪一个可能会更快? 1.Java List.SubList()性能比较
for each step i; {List=wholeList.sublist(i,i+windowlen)}
或2
List window=wholeList.sublist(0,window);
for each i{
window.remove(0);
window.add(i+windowlen);
}
?
我用system.currtime bla测量了时间.. + -std SubLists似乎工作得更快..但是为什么?我认为第二个形式给出是O(n)
我需要操作大型数据库..为此我需要看看这个..
MFG 月
假设删除步骤是唯一的一部分第二步,它们不是等价的,所以比较它们是毫无意义的。第二个修改存在和基础列表。我怀疑(2)是否会起作用。我认为没有任何理由超越(1)。
为什么如果我从另一个列表中写入值,基础列表会发生变化......或者我应该通过将windowlen-many对象添加到“window-list”来建立初始列表......可能需要很长时间。无论如何,我不得不尝试与数组一起工作..似乎我真的不明白子列表。代码非常简短。 – 2013-05-11 01:01:22
'subList'只是原始列表上的一个窗口,修改它将修改原始列表。 – 2013-05-11 05:50:08
因为这就是它在[Javadoc](http://docs.oracle.com/javase/7/docs/api/java/util/List.html#subList(int,%20int))中所说的内容:'返回列表由此列表支持,因此返回列表中的非结构性更改会反映在此列表中,反之亦然。 – EJP 2013-05-11 07:48:05
请编辑您的帖子以格式化两个代码替代品。移除步骤是否属于两者并不清楚。 – EJP 2013-05-11 00:33:04
1月 - 如果您的问题/代码显得太差,我们无法帮助您,因此我们无法弄清楚您正在谈论的内容。请修复它。 – 2013-05-11 00:37:29
除了上述内容之外,我想指出的是,根据接口抽象来讨论Java数据结构/算法的性能是没有意义的。你需要提及实际使用的类。他们有着至关重要的不同。 – 2013-05-11 00:41:28