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()方法返回值类型。
典型实现类:
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集合框架的体系结构详细说明
- Java集合类中文介绍
- 删除JAVA集合中元素的实现代码
- Java.集合(学习笔记)
- [Java文档翻译] Collections Framework Overview 集合框架概览 (中英文对照)
- 集合关系图
- connection集合和Map集合的区别
- Map和List两个集合类初学入门
- 黑马程序员--集合
- 第十一章:集合(一)
- JAVA集合总结
- Java Collection Framework 之集合概述
- Java集合迭代器 Iterator分析
- java集合(ArrayList练习)
- java集合(HashSet)
- TreeSet集合,
- java集合框架(泛型限定)
- java集合(泛型向(上下)限定
- java基础篇--05<java集合>
- ArrayList的实现原理