Java的类集框架可以使程序处理对象的方法标准化,使用迭代方法访问类集可以使对类集的操作效率更加高。被设计成类集框架的拥有以下几种特性:
1、这种框架是高性能的。
2、框架必须允许不同类型的类集以相同的方式和高度互操作的方式工作。
3、类集必须是容易扩展和修改的。
Java API中所用的集合类,都是实现了Collection接口,也就是说框架的顶层是Collection,他的继承结构如下:
Collection<--List<--Vector Collection<--List<--ArrayList Collection<--List<--LinkedList Collection<--Set<--HashSet Collection<--Set<--HashSet<--LinkedHashSet Collection<--Set<--SortedSet<--TreeSet |
Collection的常见方法:
1 删除
boolean remove(Object object) boolean removeAll(Collection coll) void clear(); |
2添加
boolean add(Object object) boolean addAll(Collection coll) |
3、判断:
boolean contains(Object object) boolean containsAll(Collection coll) boolean isEmpty();//判断集合中是否有元素 |
4 获取
int size(); iterator();取出元素的方式;迭代器。 |
5其他:
boolean retainAll(Collection coll )取交集 Object[]toArray() 将集合转成数组。 |
Vector : 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能不受Array的限制。性能也就不可能超越Array。所以,在可能的情况下,我们要多运用Array。另外很重要的一点就是Vector:同步的,这个也是Vector和ArrayList的唯一的区别。
ArrayList:同Vector一样是一个基于Array上的链表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些,但是当运行到多线程环境中时,可需要自己在管理线程的同步问题。
LinkedList:LinkedList不同于前面两种List,它不是基于Array的,所以不受Array性能的限制。它每一个节点(Node)都包含两方面的内容:1.节点本身的数据(data);2.下一个节点的信息(nextNode)。所以当对LinkedList做添加,删除动作的时候就不用像基于Array的List一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了。这就是LinkedList的优势。
List总结:
1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ];
2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];
3. 所有的List中可以有null元素,例如[ tom,null,1 ];
4. 基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。
5、List 特有的常见的方法:有一个共同特点就是都可以操作角标。