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 ,