Java集合框架:ArrayList和LinkedList性能对比示例 原创 雨点打透心脏的1/2处 2024-11-08 14:12 27阅读 0赞 Java集合框架中的`ArrayList`和`LinkedList`是两种常用的列表实现,它们在不同的操作下性能表现不同。以下是一些基本的性能对比示例: ###1.随机访问- **ArrayList**:在随机访问时,`ArrayList`的性能通常优于`LinkedList`。因为`ArrayList`是基于动态数组实现的,所以访问元素时可以直接通过索引访问,时间复杂度为O(1)。 - **LinkedList**:`LinkedList`是基于双向链表实现的,随机访问时需要从头节点开始遍历到指定位置,时间复杂度为O(n)。 ###2.插入和删除- **ArrayList**:在列表中间插入或删除元素时,`ArrayList`需要移动插入点之后的所有元素,时间复杂度为O(n)。 - **LinkedList**:`LinkedList`在列表中间插入或删除元素时,只需要改变节点的指针,时间复杂度为O(1)。 ###3.内存占用- **ArrayList**:`ArrayList`的内存占用通常比`LinkedList`小,因为它不需要存储额外的指针。 - **LinkedList**:每个节点都需要存储两个指针(指向前一个节点和后一个节点),所以内存占用更大。 ### 示例代码以下是一些简单的Java代码示例,展示`ArrayList`和`LinkedList`在不同操作下的性能对比: ```javaimport java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class ListPerformanceTest { public static void main(String[] args) { int size =10000; List<Integer> arrayList = new ArrayList<>(); List<Integer> linkedList = new LinkedList<>(); //测试添加元素 long startTime = System.currentTimeMillis(); for (int i =0; i < size; i++) { arrayList.add(i); } long endTime = System.currentTimeMillis(); System.out.println("ArrayList add: " + (endTime - startTime) + "ms"); startTime = System.currentTimeMillis(); for (int i =0; i < size; i++) { linkedList.add(i); } endTime = System.currentTimeMillis(); System.out.println("LinkedList add: " + (endTime - startTime) + "ms"); //测试随机访问 startTime = System.currentTimeMillis(); for (int i =0; i < size; i++) { arrayList.get(i); } endTime = System.currentTimeMillis(); System.out.println("ArrayList get: " + (endTime - startTime) + "ms"); startTime = System.currentTimeMillis(); for (int i =0; i < size; i++) { linkedList.get(i); } endTime = System.currentTimeMillis(); System.out.println("LinkedList get: " + (endTime - startTime) + "ms"); //测试中间插入 startTime = System.currentTimeMillis(); for (int i =0; i < size; i++) { arrayList.add(size /2, i); } endTime = System.currentTimeMillis(); System.out.println("ArrayList add in middle: " + (endTime - startTime) + "ms"); startTime = System.currentTimeMillis(); for (int i =0; i < size; i++) { linkedList.add(size /2, i); } endTime = System.currentTimeMillis(); System.out.println("LinkedList add in middle: " + (endTime - startTime) + "ms"); } } ```这个示例代码展示了`ArrayList`和`LinkedList`在添加元素、随机访问和中间插入操作下的性能对比。实际性能可能会因JVM实现、系统资源等因素而有所不同。 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 Java集合框架:ArrayList和LinkedList性能对比示例 Java集合框架中的`ArrayList`和`LinkedList`是两种常用的列表实现,它们在不同的操作下性能表现不同。以下是一些基本的性能对比示例: ###1.随机访问- 雨点打透心脏的1/2处/ 2024年11月08日 14:12/ 0 赞/ 28 阅读
相关 Java集合框架:ArrayList、LinkedList对比示例 在Java集合框架中,ArrayList和LinkedList都是常用的动态数组。它们各有特点,适用于不同的场景。 1. ArrayList: - 插入操作:O(1)(在末尾 悠悠/ 2024年10月18日 05:48/ 0 赞/ 42 阅读
相关 Java集合框架中ArrayList与LinkedList性能对比示例 在Java的集合框架中,ArrayList和LinkedList都是动态数组,但它们的实现方式和性能特点有所不同。 1. **ArrayList:**它是基于数组的列表。增删 待我称王封你为后i/ 2024年10月15日 18:15/ 0 赞/ 56 阅读
相关 Java集合框架:ArrayList与LinkedList性能对比示例 在Java中,ArrayList和LinkedList都是用来存储集合的类。它们各有特点,适用于不同的场景。 1. ArrayList: - 索引访问:O(1),因为你知道元 - 日理万妓/ 2024年10月13日 20:30/ 0 赞/ 45 阅读
相关 Java集合框架:ArrayList与LinkedList性能对比示例 在Java集合框架中,ArrayList和LinkedList都是线程不安全的容器。但它们在存储数据、添加删除操作等方面的性能有显著区别。 1. **ArrayList(动态 约定不等于承诺〃/ 2024年09月30日 04:09/ 0 赞/ 71 阅读
相关 Java集合框架:ArrayList和LinkedList的性能对比示例 在Java中,ArrayList和LinkedList都是常用的集合类。它们各有特点,适用于不同的场景。 以下是关于ArrayList和LinkedList性能对比的一些基本 ゞ 浴缸里的玫瑰/ 2024年09月16日 06:03/ 0 赞/ 56 阅读
相关 Java集合框架:ArrayList和LinkedList性能对比示例 在Java中,ArrayList和LinkedList是两种常用的集合。它们分别具有不同的特性,适合处理不同类型的数据。 1. **ArrayList:**数组底,动态扩容。 比眉伴天荒/ 2024年09月15日 09:51/ 0 赞/ 74 阅读
相关 Java集合框架:ArrayList和LinkedList性能对比 在Java的集合框架中,ArrayList和LinkedList都是常用的动态数组。它们各自有其特点和适用场景: 1. ArrayList: - 插入和删除操作性能较低,因为 川长思鸟来/ 2024年09月15日 03:15/ 0 赞/ 76 阅读
相关 Java集合框架:ArrayList和LinkedList性能对比 在Java的集合框架中,ArrayList和LinkedList都是线程不安全的,但在特定场景下,它们各自的性能特征表现得较为明显。 1. ArrayList: - 数据结构 青旅半醒/ 2024年09月10日 04:36/ 0 赞/ 100 阅读
还没有评论,来说两句吧...