集合二——List

集合ArrayList和LinkedList都实现了List接口。
List接口继承了Collection接口,因此ArrayList和LinkedList都有基本的方法:
add(E e),remove(Object o),iterator()…
此外List还声明了一个特有的迭代器方法——listIterator()。
ListIterator()方法返回一个ListIterator迭代器,它与Iterator不同点在与ListIterator可以反向遍历,可以用previous() 和hasPrevious()实现反向遍历。

List<Integer> list = new LinkedList<Integer>();	
for(int i=0;i<10;i++) {
		list.add(i);
	}
ListIterator<Integer> iterator= list.listIterator();
while (iterator.hasNext()) {
		System.out.println(iterator.next());	
	}
	while (iterator.hasPrevious()) {
		System.out.println(iterator.previous());	
	}

这里反向遍历并不是指一开始就可以从集合尾部向前遍历,而是指迭代器正反向移动。next()和previous()可以交替使用但要注意迭代器的位置和要返回的值,迭代器绕过谁就返回谁(不懂可看https://blog.youkuaiyun.com/qq_42650817/article/details/97945752)。

ArraryList:
ArrayList可认为是一个动态数组。
ArrayList有3个构造器。
ArrayList(int init);
ArrayList();
ArrayList(Collection <? extends E> c);

ArrayList()构造一个默认初始容量为10的空列表。
ArrayList(int init)构造一个指定初始容量的空列表。
ArrayList(Collection <? extends E> c)构造一个包含指定collection的列表。

当添加元素大于目前列表容量时,ArrayList会自动扩容,大约为1.5倍。因此当知道要添加元素的数量时,必须要指定列表的初始量,不然可能会造成巨大的内存浪费。
ArrayList底层是用数组存储的,因此ArrayList可以提供高效的随机访问,但要往其中插入或删除元素的效率就很底。

LinkedList:
LinkedList是一个双向链表结构的集合。
它可以很轻松的对集合进行插入和删除,但随机访问效率底。

当你需要实现List时,如果只需要进行随机访问可以用ArrayList,如果要对集合的内容进行操作那么就要选择LinkedList。如果数据量不多这两都差不多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值