ArrayList和LinkedList的区别 您所在的位置:网站首页 方便和便于的区别是什么 ArrayList和LinkedList的区别

ArrayList和LinkedList的区别

2024-06-29 16:38| 来源: 网络整理| 查看: 265

LinkedeList和ArrayList是常用的两种存储结构,都可以实现了List接口,那么它们之间有什么区别?

LinkedList和ArrayList是常见的两种存储结构,它们都可以实现List接口,那么它们有什么区别呢?下面带大家简单了解以下。

 

ArrayList和LinkedList的区别

 

一般大家都知道ArrayList和LinkedList的大致区别: 

ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

 

1、数据结构不同

ArrayList是Array(动态数组)的数据结构,LinkeedList是List(链表)的数据结构。

 

2、效率不同

当随机访问List(get 和 set操作)时,ArrayList比LinkedList效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。

当对数据进行增加和删除的操作(add 和 remove操作)时,LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以进行增删操作时,会对操作之后所有数据的下标索引造成影响,需要进行数据移动。但是实际情况并非这样,对于添加或删除,LinkedList和ArrayList并不能明确说明谁快谁慢,下面通过测试程序详细分析。

 

1 import java.util.*; 2 3 public class ListTest { 4 static List array=new ArrayList(); 5 static List linked=new LinkedList(); 6 7 public static long getTime(List list){ 8 long startTime=System.currentTimeMillis(); 9 for(int i = 0; i < 10000; i++){ 10 int index = Collections.binarySearch(list, list.get(i)); 11 if(index != i){ 12 System.out.println("ERROR!"); 13 } 14 } 15 return System.currentTimeMillis()-startTime; 16 } 17 18 //插入数据 19 public static long insertTime(List list){ 20 /* 21 * 插入的数据量和插入的位置是决定两者性能的主要方面, 22 * 我们可以通过修改这两个数据,来测试两者的性能 23 */ 24 long num = 10000; //表示要插入的数据量 25 int index = 1000; //表示从哪个位置插入 26 long startTime=System.currentTimeMillis(); 27 for(int i = 1; i < num; i++){ 28 list.add(index, i); 29 } 30 return System.currentTimeMillis()-startTime; 31 32 } 33 34 public static void main(String[] args) { 35 36 //首先分别给两者插入10000条数据 37 for(int i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有