当前位置:编程学习 > JAVA >>

java 集合类


List接口是有序的Collection,与set不同的是List允许有相同的元素。除了Iterator()方法外,List还提供ListIterator()方法,其返回ListIterator接口,此接口多了一些add()之类的方法,允许添加、删除、设定元素,还可以向前向后遍历。

实现List接口的常用类有LinkedList、ArrayList、Vector、Stack等

(1)LinkedList类:允许null元素,无同步方法,如果多线程访问,需要自己实现访问同步,可以在创建List时构造一个同步的List

List list = Collections.synchronizedList(new LinkedList(·····));

此类在首部或尾部提供get() remove() insert()方法,使得它可以被用作堆栈、队列、双向队列等。

(2)ArrayList类:实现了可变大小的数组,允许所有元素,包括null,无同步。若需插入大量元素插入前可调用ensureCapacity()方法增加容量。

(3)vector类:与ArrayList相似,但是它是同步的,当Iterator被创建且正在使用时,另一线程改变了Vector的状态则会抛出ConcurrentModificationException,需要捕获。

(4)Stack类:继承自Vector,提供push() pop() 还有peek()方法获取栈顶元素。

 

Set接口是不包含重复元素的Collection,最多允许一个null元素。

(1)Hashset:允许null值,不同步。比较hashCode看是否相同,对象元素比较可以重写hashCode和equals方法。由hashMap实例支持,不保证集合的迭代顺序

(2)TreeSet:用二叉树保存对象,添加元素按照二叉排序树构建;由treeMap实例支持,是一个有序集合,按自然顺序排列元素或者按照在创建set 时提供的比较器进行排序,这意味着其中的元素要实现comparable接口;也可以在构建treeSet时传递实现了comparator接口的比较器对象

 

Map映射接口没有继承Collection接口,其提供key和value映射

(1)Hashtable:同步的;作为key对象都必须实现hashCode()和equals()方法。如果两个对象相同,hashCode一定相同;两个对象不同,则他们的hashCode不一定不同。

(2)HashMap:不同步且允许一个或多个null值,它的values()方法返回Collection,用它的iterator可以迭代其中所有元素。entrySet()方法获取Set<Entry<xx,xx>>集合对象,通过遍历Set可以得到所有的key和value;

Vector Hashtable Stack不推荐使用。

作者:yijichangkong

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,