List集合
List常用的两个集合分别为ArrayList和LinkedList,因此对这两个集合进行总结
ArrayList
1.特点
- ArrayList 任意多个 任意类型的数据 有序可重复(添加顺序和输出顺序一致)
- ArrayList是由数组实现的,查找和修改效率高。实现了所有可选列表操作,并允许包括 null 在内的所有元素。
- 线程不安全的,创建线程安全的对象方式为:List list = Collections.synchronizedList(new ArrayList(...));
2.遍历方式
//1.for循环
for (int i = 0; i <list.size() ; i++) {
//System.out.println(list.get(i));
}
//2.foreach
for (Object object : list) {
//System.out.println("----"+object);
}
//3.迭代器
//先获得对应容器的迭代器对象
Iterator iterator = list.iterator();
//System.out.println(iterator.hasNext());
while(iterator.hasNext()){//判断是否后面还有元素
System.out.println(iterator.next());//获取该位置的元素
}
LinkedList
1.特点
- (1)LinkedList储存任意类型,任意多个的元素并且有序可重复
- (2) LinkedList是由链接实现的,在添加和删除数据方面效率高。实现所有可选的列表操作,并且允许所有元素(包括 null)。
- (3)线程不安全,实现线程安全的方式为:List list = Collections.synchronizedList(new LinkedList(...));
2.遍历方式
//1.for循环
for (int i = 0; i <linkedList.size(); i++) {
//System.out.println(linkedList.get(i));
}
//2.foreach
for (Object object : linkedList) {
System.out.println(object);
}
//3.迭代器
//获得对应容器的迭代器
Iterator iterator = linkedList.iterator();
//
while (iterator.hasNext()) {
Object object = (Object) iterator.next();
System.out.println(object);
}
ArrayList 和LinkedList的区别
1.相同点:都可以储存任意类型,任意多个的元素,都是list接口的实现类
2.不同点:(1)ArrayList是基于动态数组的数据结构,每个元素在内存中存储地址是连续的,根据下标查询的速度是很快的,向集合元素末尾添加的效率也是非常快的,删除数组中的元素以及向数组中间插入元素的效率就大打折扣了,当在添加的时候,会先去检测数组的长度,如果达到一定的峰值,会对数组进行一个扩容(前数组的1.5倍)
(2)LinkedList是基于双向链表的数据结构,与ArrayList相反,LinkedList在添加和删除数据方面效率更高。