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是Java中三个常用的集合类,它们都实现了List接口,但是在实现方式和性能上有所不同。 ArrayList ArrayList是使用数组方式存储数据的,数组元素数...
在Java编程语言中,ArrayList和LinkedList是两种常用的集合类,它们都实现了List接口,用于存储一系列有序的对象。这篇毕业设计的源码深入探讨了这两种数据结构的实现,并提供了实际的代码示例。以下是对这两个核心...
在本Java毕业设计项目中,主要探讨了两种重要的数据结构——ArrayList和LinkedList,它们都是Java集合框架中的核心组件,属于List接口的实现类。ArrayList和LinkedList各有特点,适合不同的应用场景,理解并掌握这两...
本文主要针对`List`进行详细的解析,包括其子类`ArrayList`和`LinkedList`的特点与应用场景。 #### List `List`是一个有序集合,允许元素重复。`List`接口定义了多个子类,包括`ArrayList`、`LinkedList`等。`List...
此外,Java的`Collections`类提供了`list()`方法,可以方便地将数组转换为`ArrayList`,然后再转换为`LinkedList`: ```java import java.util.ArrayList; import java.util.Arrays; import java.util.Collections;...
例如,涉及到堆栈、队列等操作,使用List接口,快速插入和删除应使用LinkList,随机访问元素使用ArrayList单线程使用非同步类,多线程使用同步类。注意对HashTable的操作,作为Key的对象要覆写equals和hashCode方法...
2. LIST:包括ArrayList、Vector和LinkList三种实现。 (1)ArrayList:基于动态数组实现,支持快速随机访问。 (2)Vector:基于数组实现,是线程同步的。 (3)LinkList:基于链表实现。 3. SET:包括HashSet、...
例如,List接口有ArrayList和Vector的数组实现,以及LinkList的链表实现;Set接口有HashSet、TreeSet和LinkedHashSet等实现;Map接口有HashMap和ConcurrentHashMap等实现,其中HashMap在JAVA8中引入了红黑树来优化...
List<String> linkList = new ArrayList(); for (Element link : links) { linkList.add(link.attr("href")); } return linkList; } ``` 这段代码会从HTML字符串中提取所有的链接。你可以根据需要调整CSS选择...
如ArrayList是基于数组实现的,Vector是线程同步的,LinkList是基于链表实现的;HashSet使用Hash表实现,TreeSet基于红黑树实现,而LinkHashSet则结合了HashMap和LinkedHashMap;HashMap在Java7和Java8中的实现有所...
1. 抽象容器:是一个接口,提供了一个iterator()方法,例如Java中的Collection接口、List接口、Set接口等。它定义了容器对象的基本操作,例如add()、remove()等。 2. 具体容器:是抽象容器的具体实现类,例如...
- 本地方法栈(线程私有):为虚拟机使用到的Native方法服务。 - 堆(Heap-线程共享):存放对象实例,是垃圾回收的主要区域。 - 方法区/永久代(线程共享):存储已被虚拟机加载的类信息、常量、静态变量等。 2...
本地方法区(线程私有) ................................................................................................................ 23 2.2.4. 堆(Heap-线程共享)-运行时数据区 ...........................
2.2.3. 本地方法区(线程私有) ................................................................................................................ 23 2.2.4. 堆(Heap-线程共享)-运行时数据区 .....................