关于集合Collection接口中的List、vector、LinkList的特点、用法和有缺点的课程笔记

集合:

Collection()+ Map()

Collection(I)
| - List(I)
| - ArrayList© - 数组
| - LinkedList© - 双向链表
| - Vector© - 数组

​ | - Set(I)
​ | - HashSet© - 散列表
​ | - SortedSet(I)
​ | - TreeSet© - 二叉树

​ | - Queue(I) - 队列
​ | - Deque(I) - 双端队列(栈)
​ | - LinkedList©

List(I)

1.特点:

a.list是有顺序的接口,所以是有序列表,并且可以使用index定位

b.list允许有重复值

c.list中允许有null

2.常用API

void add(int index, E element)
  	boolean addAll(int index, Collection<? extends E> c)
  	E get(int index) 
  	int lastIndexOf(Object o) 
  	E remove(int index) 
  	E set(int index, E element) 
  	List<E> subList(int fromIndex, int toIndex) - 截取子集合

3.常用实现类

(1).ArrayList<>()

​ a.底层数据结构:顺序结构

​ b.底层实现:数组

​ c.特点:

​ ①.按照顺序排列,每个元素都带有标号

​ ②.除了有标号是连续的,内存中的物理空间也是连续的

d.优缺点:

优点: 查询速度快(因为有连续的下标,可以根据下标进行查询)

缺点: 
	①.插入/删除速度慢(插入/删除都是要移动元素的,所以元素一多就会执行效率慢)
	②.内存的物理空间是连续的,利用不到碎片空间
(2)Vector()

​ a.底层数据结构:顺序结构

​ b.底层实现:数组

​ c.特点

​ ①全部和ArrayList一样

​ ②Vextor上带有线程同步锁(synchronized),线程是安全的,效率低

​ d.优缺点:全部和ArrayList一样

(3)LinkList()

​ a.底层数据结构:链式结构

​ b.底层实现:Node节点(data[数据] + next[下一个节点的引用])

c.特点:
①.LinkedList是双向链表
①.链表是内存中固定顺序,但是他的物理空间不连续
②.没有下标
③.所有节点的访问,都必须通过头节点(next)/尾节点(pre)
④.head(头节点): 只存next,不存data
last(尾节点): 只存pre,不存data
⑤.head.next = null -> 空链表
last.pre = null -> 空链表

d.优缺点:
优点:
a.插入/删除效率高
b.不需要连续的内存物理空间,所以空间利用率高
缺点:
查询效率低,只能从头节点出发开始查询

e.LinkedList独有的API:
(只要带有First/last的方法)
void addFirst(E e)
E getFirst()
E getLast()
E remove(int index)
E removeFirst()
E removeLast()

LinkedList<Object> link = new LinkedList<>();
link.add(1);
link.add(2);
link.add(3);
link.add(4);
link.add(5);
System.out.println(link.lastIndexOf(3));
System.out.println(link);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值