java容器
数组
定义
数组是一组存储相关类型变量的容器。
特点
数组一旦生成,其容量就不能改变。
集合
定义
集合是一个存放对象引用的容器。
特点
集合可以自动调节自己的尺寸。可以将任意数量的对象放置到容器中。
集合可以存储不同数据类型的引用,但是不能存储基本数据类型。
基本类型 | 大小 | 最小值 | 最大值 | 包装器类型 |
---|---|---|---|---|
boolean | - | - | - | Boolean |
char | 16-bit | Unicode 0 | Unicode 2^16 -1 | Character |
byte | 8-bit | -128 | 127 | Byte |
short | 16-bit | -2^15 | 2^15 -1 | Short |
int | 32-bit | -2^31 | 2^31 -1 | Integer |
long | 64-bit | -2^63 | 2^63 -1 | Long |
float | 32-bit | IEEE754 | IEEE754 | Float |
double | 64-bit | IEEE754 | IEEE754 | Double |
void | - | - | Void |
分类
集合类的基本类型是List、Set、Queue和Map。
总结:
java集合的根接口是Collection,它又继承了迭代接口Iterable。
List接口和Set接口继承了Collection,而Map是独立接口,没有继承Collection。
List的常用集合类有:ArrayList、LinkedList、Vector、Stack
Set常用集合类有:HashSet、TreeSet、LinkedHashSet
Map常用集合类有:HashMap、TreeMap、LinkedHashMap、HashTable
Queue常用类:ListedList、PriotiryQueue
迭代器有:Iterator、ListIterator
List
特点
- 集合中的元素允许重复。
- List集合中元素是有序的。(插入顺序保存元素
- 集合中元素允许通过索引访问或设置
常用类简介:
ArrayList,在随机访问方面比较快,但是在List的中间插入或移除元素时较慢。
LinkedList,通过代价较低的在List中间进行的插入和删除操作,提供了优化的顺序访问。在随机访问方面比较慢。
Stack,”后进先出“(LIFO)的容器。LinkedList具有能够直接实现栈的所有功能的方法。
Set
特点:
- 不接受重复元素
- 集合中的元素不一定保证有序
常用类简介:
HashSet,提供了最快的查询速度。(使用了散列
TreeSet,保持元素处于排序状态。(将元素存储在红-黑树数据结构中
LinkedHashSet,通过散列提供了快速访问的能力,使用链表维护了元素的插入顺序
Map
特点:
- Map没有实现Collection接口。
- 是一种将对象与对象相关联的设计
- Map中不能包含相同的key
常用类简介:
HashMap,设计用来快速访问
TreeMap,保持”键“始终处于排序状态,所以没有HashMap快
LinkedHashMap。保持元素的插入顺序,通过散列提供快速访问能力
Queue
特点:
- 队列是一个典型的先进先出(FIFO)的容器。
- 常被当作一种可靠的将对象从程序的某一个区域传输到另一个区域的途径
- 在并发编程中特别重要
常用类简介:
LinkedList,支持队列的行为,向上转型为Queue时,Queue接口窄化了对LinkedList的方法的访问权限,使得只有恰当的方法才可使用。
PriorityQueue,优先级队列,声明下一个弹出元素时最需要的元素(具有最高的优先级)
迭代器
特点:
- 不关心容器的类型。(将遍历序列的操作与序列底层的结构分离
常用对象简介:
Iterator,只能单项移动
1) 使用方法Iterator方法要求容器返回一个Iterator,Iterator将准备好返回序列的第一个元素。
2) 使用hasnext()检查序列中是否还有元素
3) 使用next()获得序列中的下一个元素
4) 使用remove()将迭代器新近返回的元素删除
ListIterator,可以双向移动。