`

List and ArrayList and LinkList 区别与用法

    博客分类:
  • Java
 
阅读更多
List and  ArrayList:
1、List是一个接口,ArrayList是一个实现了List接口的具体类。 他们是父子关系,我们常用的是ArrayList,但常用List的引用去操作ArrayList 这是一个简单的面向接口编程的一种,如:List myList = new ArrayList();
2、他们主要是用来保存对象的集合,记得是保存对象的哦,你可别传个int进去啊
3、要取出它里面保存的对象可以用下标,如:Object aaa = myList.get(0); 这样我们就把保存在myList里的第一个对象取出来给了 aaa 啦。

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

    在Java编程语言中,ArrayList和LinkedList是两种常用的集合类,它们都实现了List接口,用于存储一系列有序的对象。这篇毕业设计的源码深入探讨了这两种数据结构的实现,并提供了实际的代码示例。以下是对这两个核心...

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

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

    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;...

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

    例如,涉及到堆栈、队列等操作,使用List接口,快速插入和删除应使用LinkList,随机访问元素使用ArrayList单线程使用非同步类,多线程使用同步类。注意对HashTable的操作,作为Key的对象要覆写equals和hashCode方法...

    JAVA核心知识点整理.pdf

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

    java面试资料整理.pdf

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

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

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

    Java设计模式.pdf

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

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

    1. 抽象容器:是一个接口,提供了一个iterator()方法,例如Java中的Collection接口、List接口、Set接口等。它定义了容器对象的基本操作,例如add()、remove()等。 2. 具体容器:是抽象容器的具体实现类,例如...

    JAVA核心知识点整理2021.pdf

    - 本地方法栈(线程私有):为虚拟机使用到的Native方法服务。 - 堆(Heap-线程共享):存放对象实例,是垃圾回收的主要区域。 - 方法区/永久代(线程共享):存储已被虚拟机加载的类信息、常量、静态变量等。 2...

    java核心知识点整理.pdf

    本地方法区(线程私有) ................................................................................................................ 23 2.2.4. 堆(Heap-线程共享)-运行时数据区 ...........................

    JAVA核心知识点整理(有效)

    2.2.3. 本地方法区(线程私有) ................................................................................................................ 23 2.2.4. 堆(Heap-线程共享)-运行时数据区 .....................

Global site tag (gtag.js) - Google Analytics