JAVA的容器

来源:互联网 发布:防止js脚本注入攻击 编辑:程序博客网 时间:2024/05/22 13:13

JAVA的容器:list ,set,map
List包括:linkedlist,arraylist,vector.vector包括Stack
Set
Map包括hashtable,hashmap,WeakhashMap

Collection是最基本的集合接口,一个collection集合代表一组object. Java SDK不提供直接集成collection的类.而是直接来自collection的子接口list ,set
Collection的遍历,不论Collection的实际类型如何,它都支持一个iterator(),该方法返回一个迭代子
Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) {
  Object obj = it.next(); // 得到下一个元素
}
Collection派生的俩个接口list和set


List接口


List是有序的Collection,不允许有相同的元素, 和下面要提到的Set不同,List允许有相同的元素。
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个 ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。
实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。

1.LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
  注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
    List list = Collections.synchronizedList(new LinkedList(...));
2.vector类
 Vector非常类似ArrayList,但是Vector是同步的。以适应创建 Vector 后进行添加或移除项的操作.当一个vector在使用iterator时候,另一个vector是无法使用的.此时会抛出ConcurrentModificationException异常.

3.Stact对象堆栈,继承了vector 它通过五个操作对类 Vector 进行了扩展, 它提供了通常的 push  1 和 pop  2 操作,以及取堆栈顶点的 peek 3 方法、测试堆栈是否为空的 empty  4方法、在堆栈中查找项并确定到堆栈顶距离的 search  5方法。
Deque 接口及其实现提供了 LIFO 堆栈操作的更完整和更一致的 set,应该优先使用此 set,而非此类。例如:
   Deque<Integer> stack = new ArrayDeque<Integer>();


Set接口
 Set是一种不包含重复的元素的Collection,即任意的两个元素都不会相等。
Object.equals(Object)=true将导致一些问题。

Map接口
注意,Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个 value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。

原创粉丝点击