您的位置:首页 > 编程语言 > Java开发

Java集合

2016-03-03 19:44 387 查看
Set集合:无序,不可重复,判断两个对象相同不是使用==运算符,而是根据equals方法。

典型实现类:

HashSet,HashSet集合判断两个元素是否相同的标准时两个对象通过equals()方法比较相等,并且两个对象的hashCode()方法返回值也相等。

其他实现类:

LinkedHashSet,HashSet子类,用链表维护元素次序,迭代访问全部元素时有较好的性能。

TreeSet, SortedSet接口的实现类。判断两个对象是否相等的唯一标准:通过compareTo(Object obj)方法比较返回0。支持自然排序和定制排序两种排序方法。

EnumSet是一个专为枚举类设计的集合类。

List集合:有序,可以重复,集合中每个元素都有其对应的索引,因此提供了一些根据索引来操作集合元素的方法。List判断两个对象是否相等通过equals()方法。List还提供了一个listIterator()方法,该方法返回ListIterator对象,相比于Iterator对象多了可以反向迭代的两个方法和add()方法。

典型实现类:

ArrayList基于数组实现的List类。

Vector
与ArrayList 在用法上几乎完全一致,是古老的集合,不推荐使用。有一个Stack子类,用于模拟“栈”这种数据结构,“栈”是一种“后进先出”的容器。Stack有三个方法:peek(),pop();push()。

LinkedList
既实现了List接口也实现了Deque接口,可作为栈使用。

Queue集合:模拟队列这种数据结构,队列是一种“先进先出”的容器,队列不允许随机访问队列中的元素。有一个Deque接口,Deque代表一个双端队列,可以同时从两端添加、删除元素。

实现类:

PriorityQueue,保存队列的顺序按队列元素的大小,最小的元素放在队列头部。有两种排序方式,类似于TreeSet。

Deque接口实现类:

ArrayDeque,是一个基于数组实现的双端队列,实现机制类似ArrayList。可当作栈来使用,当程序需要使用“栈”这种数据结构的时候,推荐使用ArrayDeque和LinkedList。

LinkedList

线性表性能分析:基于数组的集合实现,例如ArrayList、Vector、ArrayDeque等,使用随机访问(get)的性能比Iterator迭代访问的性能要好;对于LinkedList集合则使用迭代器(Iterator)来遍历集合元素。

如果需要经常执行插入、删除操作来改变List集合的大小,应该使用LinkedList的集合。

Map集合:用于保存具有映射关系的数据,以key-value对的形式存储,key不允许重复,类似Set集合。从Java源码上看,Java先是实现了Map,然后通过包装一个所有value都为null的Map就实现了Set集合。主要的两个方法:keySet()返回所有key组成的Set集合。,get(Object key)返回value。Map中包含一个内部类Entry,该类封装了key-value对,Entry有如下三个方法:Object getKey();Object getValue();Object
setValue(String value).

实现类:

HashMap和Hashtable,两者的关系类似于ArrayList和Vector,Hashtable不允许使用null作为key和value,否则会引发空指针异常,HashMap则可以使用null作为key和value。这两个类判断两个value是否相等的依据是equals()方法的返回值。尽量不使用可变对象作为Hashtable和HashMap的key。

Properties作为Hashtable的子类,用来处理属性文件非常方便。其有如下几个常用方法:Object setProperty(String key,String value),String getProperty(String key),String getProperty(String key,String defaultValue),void load(InputStream inStream),void store(OutputStream out,String comments)。

SortedMap接口和TreeMap实现类类似于SortedSet和TreeSet。

其他:WeakHashMap,IdentityHashMap,EnumMap。

对于一般的应用场景,程序应该多考虑使用HashMap,因为HashMap是为快速查询而设计的。

操作集合的工具类:Collections

操作List集合元素的方法:

reverse(List list);shuffle(List list);sort(List list);sort(List list,Comparator c);swap(List list,int i,int j);

查找替换操作:略。

同步控制:

synchronizedXxx()方法可以将指定集合包装成线程同步的集合,保证多线程并发访问时的线程安全问题。

设置不可变集合:略。

古老的Enumeration接口:是Iterator迭代器的老版本,只有两个方法:boolean hasMoreElements();Object nextElement();用来遍历Vector、Stack、Hashtable以及极少使用BitSet遗留下来的集合。是Vector的elements()方法返回值类型、Hashtable的keys()方法返回值类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java集合