繁体   English   中英

比较arraylist和链表...我的代码错误吗?

[英]comparing arraylist and linkedlist…is my code wrong?

我问了另一个问题,为什么在读取文件和创建列表时,arraylist看起来比链表更快。 我现在尝试将其添加到列表的前面或列表的后面。 Arraylist仍然更快。

我只想确保我正确使用了这些东西。 这是我在做什么:

public class LinkedListTest {

    private List<String> Names;

    public LinkedListTest(){
            Names = new LinkedList<String>();
    }

然后,我只使用链表方法,即“ Names.add(strings)”。 当我测试数组列表时,几乎是相同的:

public class ArrayListTest {

    private List<String> Names;

    public ArrayListTest(){
            Names = new ArrayList<String>();
    }

我做对了吗? 实际上,在比较速度时,将构造函数方法中的列表类型从ArrayList更改为LinkedList几乎是我在代码中所做的唯一更改。 这是正确的方法吗?

编辑:哦,我只是在添加函数之前和之后执行System.currentTimeMillis()以测量时间。

如果您想要简单的东西,简单的时间增量就可以了,但是如果您想要更复杂的东西,可以供以后参考,请查看以下内容:

http://www.ibm.com/developerworks/java/library/j-benchmark1.html

然后,我只使用链表方法,即“ Names.add(strings)”。 当我测试数组列表时,几乎是相同的:

您是如何测试的? 通常,通过测量数百万时间执行同一操作所需的时间,然后进行简单的除法来完成此操作。

是的,您正确使用了那些。 您要测试多少数据? 如果数据集太小,则可能无法获得良好的测试结果,因为可能会有特殊情况的优化使结果产生偏差。 根据您的时间安排,您应该平均许多测试运行的时间,以确保平均CPU负载峰值和其他资源峰值。

我不确定,但是我建议尝试不同数量的测试数据-也许增加10倍,看看性能是否出现线性变化。 例如,您可以使用100、1000、10000、100000和1000000的100个项目测试每个列表,并查看差异是否是线性的以及实现方式如何进行比较。

除了在开头和结尾处插入内容外,测试将项目插入列表中间所需的时间可能很有趣。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM