arraylist与链表。为什么链表在最后添加时速度较慢? import java.util.ArrayList; 导入java.util.LinkedList; 导入java.util.List; 公共类比较专家{ 公共静态void main(字符串[]args){ List ArrayList=新建ArrayList(); List LinkedList=新建LinkedList(); 文件计算(“ArrayList”,ArrayList); 文档计算(“LinkedList”,LinkedList); } 私有静态无效文档计算(字符串类型,列表){ 对于(int i=0;i

arraylist与链表。为什么链表在最后添加时速度较慢? import java.util.ArrayList; 导入java.util.LinkedList; 导入java.util.List; 公共类比较专家{ 公共静态void main(字符串[]args){ List ArrayList=新建ArrayList(); List LinkedList=新建LinkedList(); 文件计算(“ArrayList”,ArrayList); 文档计算(“LinkedList”,LinkedList); } 私有静态无效文档计算(字符串类型,列表){ 对于(int i=0;i,java,microbenchmark,Java,Microbenchmark,来说,您目前在这里做的是一个微基准测试。这不是一项容易的任务,因为您必须考虑以下所有提示: 不过,没有必要重新发明轮子。有一些框架可以简化这项工作,并通过使用JUnit测试帮助您为代码/算法执行真正的基准测试。您目前正在做的是一个微基准测试。这不是一项容易的任务,因为您必须考虑所有这些提示: 尽管如此,仍然没有必要重新发明轮子。有一些框架可以简化这项工作,并通过使用JUnit测试帮助您为代码/算法执行真正的基准测试。链表速度较慢,因为它就像一列火车……它必须检查每个元素并检查其值……直到找到匹配

来说,您目前在这里做的是一个微基准测试。这不是一项容易的任务,因为您必须考虑以下所有提示:


不过,没有必要重新发明轮子。有一些框架可以简化这项工作,并通过使用JUnit测试帮助您为代码/算法执行真正的基准测试。

您目前正在做的是一个微基准测试。这不是一项容易的任务,因为您必须考虑所有这些提示:


尽管如此,仍然没有必要重新发明轮子。有一些框架可以简化这项工作,并通过使用JUnit测试帮助您为代码/算法执行真正的基准测试。

链表速度较慢,因为它就像一列火车……它必须检查每个元素并检查其值……直到找到匹配的元素ent..所以把它想象成链式火车,你想从火车的第一列到最后一列

链表比较慢,因为它像火车…….它必须检查每个元素并检查它的值..直到它找到匹配的元素..所以把它想象成链式火车,你想从火车的第一列到最后一列

因为基准测试很难。很抱歉,您的测试完全失败了。请参阅在您的
main
方法中尝试反向调用
doccalculations
,您将得到完全不同的结果;)@luigimendoza反向调用是什么意思?首先调用
doccalculations(“LinkedList”,LinkedList)
,然后调用
doccalculations(“ArrayList”,ArrayList);
你会看到的。因为基准测试很难。很抱歉,你的测试完全失败了。请参阅在你的
main
方法中尝试反向调用
doccalculations
,你会得到完全不同的结果;)@Luigimendoza反向调用
doccalculations(“LinkedList”)是什么意思“,LinkedList)
首先,然后是
doccalculations(“ArrayList”,ArrayList);
你会看到的。但是为什么它更快呢?但是为什么它更快呢?
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;


public class CompareList {
public static void main(String[] args) {
    List<Integer> ArrayList = new ArrayList<Integer>();
    List<Integer> LinkedList = new LinkedList<Integer>();
    doCalculations("ArrayList",ArrayList);
    doCalculations("LinkedList",LinkedList);    
}
private static void doCalculations(String type,List<Integer> List){
    for(int i=0;i<1E5;i++){
        List.add(i);    
    }
    Long start = System.currentTimeMillis();
    /*
     To add elements in the end 
    for(int i=0;i<1E5;i++){
        List.add(i);    
    }
    */
    for(int i=0;i<1E5;i++){
        List.add(0,i);
    }
    Long end = System.currentTimeMillis();
    System.out.println("time taken" +" "+ (end-start) + "ms for" +" "+ type);
}
}