`
rain_2372
  • 浏览: 680913 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

list与arraylist、linklist的区别

    博客分类:
  • java
 
阅读更多
List是一个接口,ArrayList和LinkedList是两个实现类,他们实现的方式不一样,其实LinkedList才是真正的链表(如果不清楚什么是链表,需要了解一下相关数据结构的知识,这不是一两句话能说清楚的),而ArrayList是用数组实现的,它不是真正的链表,在初始化的时候它先对数组设置一个初始容量,当数组空间不够的时候,它会重新构建一个容量更大的数组,然后把先前的元素拷贝进去。
ArrayList和LinkedList本质上的区别就是数组和列表这两种数据结构的区别。课参阅相关数据结构的知识。
我这里简单的为你归纳几点:
ArrayList:缺点:内存使用量要大一些,添加删除元素效率较低。元素随机访问的效率较高。
LinkedList:相反。



ArrayList:

ArrayList其实是包装了一个数组Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayList中添加对象是,数组的大小也相应的改变。这样就带来以下有特点:

快速随即访问 你可以随即访问每个元素而不用考虑性能问题,通过调用get(i)方法来访问下标为i的数组元素。

向其中添加对象速度慢 当你创建数组是并不能确定其容量,所以当改变这个数组时就必须在内存中做很多事情。

操作其中对象的速度慢 当你要想数组中任意两个元素中间添加对象时,数组需要移动所有后面的对象。 LinkList:

LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。这样就带来以下有特点:

操作其中对象的速度快 只需要改变连接,新的节点可以在内存中的任何地方

不能随即访问 虽然存在get()方法,但是这个方法是通过遍历接点来定位的所以速度慢。 一些结论: 当一些被定义好的数据需要放到与数组对应的List中,ArrayList是很好的选择,因为它可以动态变化,但是不要在整个应用程序中频繁的使用。你要很方便的操作其中的数据而不用随即访问时;LinkList是很好的选择。如果你要频繁随机访问建议使用ArrayList
分享到:
评论

相关推荐

    ArrayList LinkList和vector的区别

    ArrayList、LinkList和Vector的区别 ArrayList、LinkList和Vector是Java中三个常用的集合类,它们都实现了List接口,但是在实现方式和性能上有所不同。 ArrayList ArrayList是使用数组方式存储数据的,数组元素数...

    ArrayList,LinkList链表接口实现.zip

    ArrayList和LinkedList是Java集合框架中的两种重要数据结构,它们都实现了List接口,但各自有其独特的特性和使用场景。在本教程中,我们将深入探讨这两种数据结构的实现,并结合Eclipse IDE进行实践。 首先,...

    毕业设计源码之ArrayList,LinkList链表接口实现.zip

    2. **ArrayList与LinkedList的区别**:对比分析ArrayList和LinkedList在存储结构、空间效率、时间复杂度等方面的差异,学习如何根据需求选择合适的数据结构。 3. **源码阅读**:通过阅读ArrayList和LinkedList的...

    java毕业设计之ArrayList,LinkList链表接口实现源码.zip

    在本Java毕业设计项目中,主要探讨了两种重要的数据结构——ArrayList和LinkedList,它们都是Java集合框架中的核心组件,属于List接口的实现类。ArrayList和LinkedList各有特点,适合不同的应用场景,理解并掌握这两...

    arraylist和linkedlist的时间复杂度

    arraylist 和linked list的时间复杂度

    java各种集合的详解Set,List,Vector

    java各种集合的详解Set,List,Vector,arrayList,linkList,HashSet

    java集合总结

    本文主要针对`List`进行详细的解析,包括其子类`ArrayList`和`LinkedList`的特点与应用场景。 #### List `List`是一个有序集合,允许元素重复。`List`接口定义了多个子类,包括`ArrayList`、`LinkedList`等。`List...

    array2-linklist1

    此外,Java的`Collections`类提供了`list()`方法,可以方便地将数组转换为`ArrayList`,然后再转换为`LinkedList`: ```java import java.util.ArrayList; import java.util.Arrays; import java.util.Collections;...

    爬虫例子源代码

    // List linkList=new ArrayList(); String startsite = ""; SearchResultBean srb; List resultList = new ArrayList(); List searchsite = new ArrayList(); Queue linklist = new LinkedList(); ...

    Java双向链表的实现

    LinkList list = new LinkList(); list.addFirst(1); list.addLast(2); list.addAfter(list.head, 3); list.display(); // 应输出:1 -> 3 -> 2 } } ``` 在实际应用中,双向链表常用于实现集合框架中的`...

    Java中Collection、List、Set、Map之间的关系总结

    List接口允许有相同元素,例如ArrayList、LinkList、Vector等。ArrayList是实现可变大小的数组,允许所有的元素,不是同步的,也就是没有同步方法。LinkList允许null元素,通常在首部或者尾部操作,所以常被使用做...

    java利用springboot提供的RestTemplate爬虫示例

    List<String> linkList = new ArrayList(); for (Element link : links) { linkList.add(link.attr("href")); } return linkList; } ``` 这段代码会从HTML字符串中提取所有的链接。你可以根据需要调整CSS选择...

    C#编程中常见数据结构的比较(Unity3D游戏开发)

    为了解决 ArrayList 不安全类型与装箱拆箱的缺点,List<T> 作为一种新的数组类型引入,继承了 ArrayList 的一些优点,且确保了类型的安全,因无需进行装箱拆箱操作,因此 List<T> 是高性能的,所以 List<T> 在游戏...

    java面试资料整理.pdf

    例如,List接口有ArrayList和Vector的数组实现,以及LinkList的链表实现;Set接口有HashSet、TreeSet和LinkedHashSet等实现;Map接口有HashMap和ConcurrentHashMap等实现,其中HashMap在JAVA8中引入了红黑树来优化...

    JAVA核心知识点整理.pdf

    2. LIST:包括ArrayList、Vector和LinkList三种实现。 (1)ArrayList:基于动态数组实现,支持快速随机访问。 (2)Vector:基于数组实现,是线程同步的。 (3)LinkList:基于链表实现。 3. SET:包括HashSet、...

    Java设计模式之迭代器模式_动力节点Java学院整理

    2. 具体容器:是抽象容器的具体实现类,例如ArrayList、LinkList、HashSet等。它实现了抽象容器中的方法,并提供了具体的容器对象。 3. 抽象迭代器:定义了遍历元素所需要的方法,例如first()、next()、isDone()等...

    Java设计模式.pdf

    如ArrayList是基于数组实现的,Vector是线程同步的,LinkList是基于链表实现的;HashSet使用Hash表实现,TreeSet基于红黑树实现,而LinkHashSet则结合了HashMap和LinkedHashMap;HashMap在Java7和Java8中的实现有所...

    JAVA核心知识点整理2021.pdf

    - LinkList:基于双向链表实现,线程不安全,插入和删除操作快。 - HashSet:基于HashMap实现,不允许重复元素,存储速度快。 - TreeSet:基于红黑树实现,可以排序,允许重复元素。 - LinkHashSet:是HashSet的...

Global site tag (gtag.js) - Google Analytics