学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系

1.集合框架概述

**java 集合就像一种容器,可以把多个对象的引用放入容器中。

Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组
Java 集合可分为 Set、List 和 Map 三种体系
Set:无序、不可重复的集合
List:有序,可重复的集合
Map:具有映射关系的集合
在 Java5 之前,Java 集合会丢失容器中所有对象的数据类型,把所有对象都当成 Object 类型处理;从 Java5 增加了泛型以后,Java 集合可以记住容器中对象的数据类型**

1.1集合框架类结构:

我们主要分析Vector和ArrayList和LInkedList,其他大概知道位置就可以了。

学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系

Iterator接口:最左上方。

Iterator 接口主要用于遍历 Collection 集合中的元素,Iterator 对象也被称为迭代器
Iterator 接口隐藏了各种 Collection 实现类的底层细节,向应用程序提供了遍历 Collection 集合元素的统一编程接口
Iterator 仅用于遍历集合,Iterator 本身并不提供承装对象的能力。如果需要创建 Iterator 对象,则必须有一个被迭代的集合。

Collection 接口:最上面中间。

*Collection 接口是 List、Set 和 Queue 接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合:

在框架中使用 foreach 循环遍历集合元素:

java 5 提供了 foreach 循环迭代访问 Collection,Person是一个类对象。
学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系

2.List集合:

List 代表一个元素有序、且可重复的集合,集合中的每个元素都有其对应的顺序索引
List 允许使用重复元素,可以通过索引来访问指定位置的集合元素。
List 默认按元素的添加顺序设置元素的索引。
List 集合里添加了一些根据索引来操作集合元素的方法
void add(int index, Object ele)
boolean addAll(int index, Collection eles)
Object get(int index)
int indexOf(Object obj)
int lastIndexOf(Object obj)
Object remove(int index)
Object set(int index, Object ele)
List subList(int fromIndex, int toIndex)

2.1代码实现List

.学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系

学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系

3.ArrayList集合:

ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
线程不安全
动态扩容方式是“50%

学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系

3.1代码实现

ArrayList实现添加,修改,删除,查询一本书,查询所有书,
学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系

4.LinkedList集合:

LinkedList采用双向链表存储方式。插入、删除元素时效率比较高
学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系
学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系

4.1代码实现

LinkedList实现添加,修改,删除,查询一本书,查询所有书,
基本改实现LinkedList类。可以用自己对应的方法。如addfitst,addlast.
学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系

5.Vector集合:

Vector实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
线程安全
动态扩容方式是“倍增”

学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系

5.1代码实现

学习集合框架1.0 List类,ArrayList类 LinkedList类 Vector类区别和联系
原理一样。

6.Vector,ArrayList,LinkedList区别与联系:

6.1区别分析

**Vector,ArrayList基本是数组属性,内部以数组的形式来保存集合中的元素,
LinkedList是链表属性。内部以链表的形式来保存集合中的元素
****说明:程序中示范了LinkedList作为双向队列、栈和List集合的用法。LinkedList与ArrayList、Vector的实现机制完全不同,ArrayList、Vector内部以数组的形式来保存集合中的元素,因此随机访问集合元素上有较好的性能;而LinkedList内部以链表的形式来保存集合中的元素,因此随机访问集合时性能较差,但在插入、删除元素时性能非常出色(只需改变指针所指的地址即可)。Vector因实现了线程同步功能,所以各方面性能有所下降。

关于使用List集合的几点建议:
如果需要遍历List集合元素,对应ArrayList、Vector集合,则应该使用随机访问方法(get)来遍历集合元素,这样性能更好。对应LinkedList集合,则应采用迭代器(Iterator)来遍历集合元素。
如果需要经常执行插入、删除操作来改变Lst集合大小,则应该使用LinkedList集合,而不是ArrayList。
如果多条线程需要同时访问List集合中的元素,可以考虑使用Vector这个同步实现。**