赞
踩
集合是由若干个确定的元素所构成的整体,在程序中一般代表保存若干个元素(数据)的某种容器。
通过定义可知,集合就是由若干元素组成的,那么数组也是一种集合,使用也方便,那为什么还要有其他集合呢?
数组的特点:初始化后大小不可变;数组只能按索引顺序存取。
因此,我们需要有各种不同类型的集合类来处理不同的数据,例如:大小可变的顺序链表,保证无重复元素的集合....
主要有三种类型的集合:
List:一种有序列表的集合;
Set:一种保证没有重复元素的集合;
Map:一种通过键值对查找映射表的集合
List是有序的、可重复的单列集合,集合中的每个元素都有对应的顺序索引。且List允许有null值。
boolean add(E e):在集合末尾添加一个数据元素;
boolean add(int index, E e):在集合的指定索引出添加一个数据元素;
E remove(int index):删除集合中指定索引的元素;
boolean remove(Object e):删除集合中的某个元素;
E get(int index):获取集合中指定索引出的元素;
int size():获取集合的大小(包含元素的个数)。
通过多态的方式创建对象:因为List是接口,不能直接new list;
通过Arrays.List()方法创建对象:根据指定元素快速创建对象
- import java.util.ArrayList;
- import java.util.LinkedList;
- import java.util.List;
-
- public class test {
- public static void main(String[] args) {
- //方法一:
- List<String> list1 = new ArrayList<>();
- List<String> list2 = new LinkedList<>();
-
- //方法二:
- List<Integer> list3 = Arrays.asList(1,3,5,7,8,4);
- }
- }
for循环+get(索引值):对ArrayList比较高效,但是对LinkedList比较低效
增强for循环:比普通for循环简洁一些
使用Iterator迭代器进行稽核遍历:不同的List对象调用iterator()方法时,会返回不同实现的Iterator对象,该Iterator对象对集合总是具有最高访问效率。
ArrayList | LinkedList | |
获取指定元素 | 速度快 | 需要从头开始查找 |
添加元素到末尾 | 速度快 | 速度快 |
在指定位置添加/删除 | 需要移动元素 | 不需要移动元素 |
内存占用 | 少 | 较大 |
List是按索引顺序访问的、长度可变的有序列表;
一般开发时,ArrayList比LinkedList的使用更频繁;
List和Array可以相互转换;
集合遍历时有多种方式,增强for循环和Iterator迭代器的效率更高;
ArrayList与LinkedList都是List接口的实现类,都实现了List中所有未实现的方法,但实现的方式有所不同;
ArrayList底层的数据结构基于动态数组,访问元素速度快于LinkedList,在快速访问数据时ArrayList的执行效率比较高;
LinkedList底层的数据结构基于链表,占用的内存空间较大,但批量插入或删除数据时快于ArrayList。当频繁向集合中插入和删除元素时,使用LinkedList比ArrayList的效率更高。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。