第一章
集合框架
Java集合框架为我们提供了一套性能优良,使用方便的接口和类,它们都位于java.util中。
集合框架是为表示和操作集合而规定的一种统一的标准体系结构。集合框架包括三大内容1对外的接口2接口的实现3对集合运算的算法。
Java集合框架中的两大类接口,Collection和Map 其中Collection又有两个子接口List和Set。
Collection接口存储一组不唯一(容许重复)无序的对象。
Set接口继承Collection接口,存储一组唯一(不容许重复)、无序的对象
List接口继承Collection接口,存储一组不唯一(容许重复)、有序的对象的对象
Map接口存储一组成对的键-值对象,提供key到value的映射。key不要求有序,不容许重复。value同样不要求有序,但容许重复。
Iterator接口是负责定义访问和遍历元素的接口。
List接口
实现List接口的常用类有ArrayList和LinkedList。
ArrayList对数组进行了封装,实现了长度可变的数组,是在内存中分配连续的空间,它的优点在于遍历元素和随机访问元素的效率比较高。
LinkedList采用链表存储方式,优点在于插入、删除元素时效率比较高。它提供了额外的addfirst()、addLast()、removeFirst()和removeLast()等方法。
List接口中定义的各种常用方法
方法名称 | 说明 |
boolean add(Object o) | 在列表末尾顺序添加元素,起始索引位置从0开始 |
void add(int index,Object o) | 在指定的索引位置添加元素,原索引位置及其后面的元素依次后移 |
int size() | 返回列表中的元素个数 |
Object get(int index) | 返回指定索引位置处的元素 |
boolean contains(Object o) | 判断列表中是否存在指定元素 |
boolean remove(Object o) | 从列表删除元素 |
Object remove(int index) | 从列表中删除指定位置元素起始索引位置从0开始 |
LinkedList的一些特殊方法
方法名称 | 说明 |
void addFirst(Object o) | 在列表的首部添加元素 |
void addLast(Object o) | 在列表的末尾添加元素 |
Object getFirst() | 返回列表中的第一个元素 |
Object getList() | 返回列表中的最后一个元素 |
Object removeFirst() | 删除并返回列表中的第一个元素 |
Object removeLast() | 删除并返回列表中的最后一个元素 |
Set接口
set接口常用的实现类有HashSet
HashSet集合的特点有
集合内的元素是无序排列的 。
HashSet类是非线程安全的。
允许集合元素为null
HashSet类的常用方法
方法 | 说明 |
boolean add(Object o) | 如果此Set中尚未包含指定元素,则添加指定元素 |
void clear() | 从此Set中移除所有元素 |
int size() | 返回此Set中元素的数量 |
boolean is Empty() | 如果此Set不包括任何元素,则返回true |
boolean contains(Object o) | 如果此Set中包括指定元素,则返回true |
boolean remove(Object o) | 如果指定元素存在于此Set中,则将其移除 |
Map接口
Map接口的实现类HashMap
Map的常用方法
方法 | 说明 |
Object put(Object key,Object value) | 以“键-值对”的方式进行存储 键必须是唯一的,值可以重复。如果尝试添加重复的键,那么最后加入的“键-值对”将替换原先的 |
Object get(Object key) | 根据键返回相关的值,若不存在指定的键返回null |
Object remove(Object key) | 删除指定的键映射的“键-值对” |
int size() | 返回元素个数 |
Set keySet() | 返回键的集合 |
Collection value() | 返回值得集合 |
boolean containsKey(Object key) | 若存在指定的键值映射的“键-值对”,返回true |
boolean isEmpty() | 若不存在键值映射关系,则返回true |
void clear() | 从此映射中移除所有映射关系 |
迭代器Iterator
Collection接口的Iterator()方法返回一个Iterator,然后通过Iterator接口的两个方法实现遍历
boolean hasNext():判断是否存在另一个访问的元素
Object next():返回要访问的下一个元素。
增强型for循环
for(元素类型t 元素变量x :数组或集合对象){
引用了x的Java语句;
}
泛型集合
使用泛型集合在创建集合和对象时指定集合中元素的类型,从集合中取出元素时无须进行类型强制转换,并且如果把非指定类型对象放入集合,会出现编译错误。