集合的概念
-
概念:对象的容器,存储对象的对象,可代替数组。
-
特点:容器的工具类,定义了对多个对象进行操作的常用方法。
-
位置:java.util.*;
Collection体系集合
Collection父接口
-
特点:代表一组任意类型的对象,无序、无下标。
-
方法:
-
boolean add(Object obj);//添加一个对象。
boolean addAll(Collection c);//将一个集合中的所有对象添加到此集合中。
void clear() //清空此集合中的所有对象
boolean contains(Objetc o) //检查此集合中是否包含 o 对象
boolean equals(Objetc o) //比较此集合是否与指定对象相等
boolean isEmpty() // 判断此集合是否为空
boolean remove(Object o) //在此集合中移除 o 对象
int size() //返回此集合中的元素个数
Object[] toArray() //将此集合转换成数组
-
List接口与实现类
List子接口
-
特点:有序、有下标、元素可以重复
-
方法:
-
void add(int index, Object o) //在indexe位置插入对象 o
boolean addAll(int index, Collection c) //将一个集合中的元素添加到此集合中的index位置
Object get(int index) //返回集合中指定位置的元素
List subList(int fromIndex, int toIndex)//返回fromIndex和toIndex之间的集合元素。
-
List实现类
-
ArrayList【重点】:
-
JDK 6 初始长度是10;JDK 7 开始,初始长度为 0,第一次用才开始分配空间。
-
数组结构实现,查询快、增删慢;
-
JDK 1.2版本,运行效率快、线程不安全。
-
-
Vector:
-
数组结构实现,查询快、增删慢;
-
JDK 1.0版本,运行效率慢、线程安全。
-
-
LinkedList:
-
链表结构实现,增删快、查询慢。
-
ArrayList 与 LinkedList 不同结构实现方法
-
ArrayList:数组结构,线性表,连续
-
必须开辟连续空间,查询快,增删慢
-
-
LinkedList:链表结构,离散
-
无需开辟连续空间,查询慢,增删快
-
Set接口与实现类
Set子接口
-
特点:无序、无下标、元素不可重复。
-
方法:全部继承自Collection中的方法。
Set实现类
-
HashSet【重点】:
-
基于HashCode实现元素不重复。
-
当存入元素的哈希码相同时,会调用equals进行确认,如结果为true,则拒绝后者存入。
-
-
LinkedHashSet:
-
链表实现的HashSet,按照链表进行存储。
-
可以保留元素的插入顺序。
-
-
TreeSet:
-
基于排列顺序实现元素不重复。
-
实现了SortedSet接口,对集合元素自动排序。
-
元素对象的类型必须实现Comparable接口,指定排序规则。
-
通过 ComparaTo 方法确定是否为重复元素。
-
Map接口与实现类
Map父接口【映射】
-
特点:
-
用于存储任意键值对(key—value)。
-
键:无序、无下标、不允许重复(唯一)。
-
值:无序、无下标、允许重复。
-
-
方法:
-
V put (K key, V vlaue) //将对象存入到集合中,关联键值。key重复则 覆盖 原值。
Object get(Object key) //根据键获取对应的值。
//下面三个和视图有关
Set<K> KeySet()//返回所有key
Collection<V> values() //返回包含所有值的Collection集合
Set<Map.Entry<K,V>> entrySet()//键值匹配的Set集合
-
Map集合的实现类
-
HashMap【重点】:
-
JDK 1.2版本,线程不安全,运行效率快;允许用 null 作为 key 或 value。
-
-
Hashtable:
-
JDK 1.0版本,线程安全,运行效率慢;不允许 null 作为 key 或是 value。
-
-
Properties:【后缀文件名,配置文件】
-
Hashtable 的子类,要求key和value都是String。通常用于配置文件的读取。
-
-
TreeMap:
-
实现了 SortedMap 接口(是 Map 的子接口),可以对 key 自动排序。
-
泛型集合与工具类
泛型集合
-
概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致。
-
特点:
-
编译时即可检查,而非运行时抛出异常。
-
访问时,不必类型转换(拆箱)。
-
不同泛型之间引用不能相互赋值,泛型不存在多态。
-
Collections工具类
-
概念:集和工具类,定义了除了存取以外的集和常用方法。
-
方法:
-
public static void reverse(List<?> list) //反转集合中元素的顺序
public static void shuffle(List<?> list) //随机重置集合元素的顺序
public static void sort(List<?> list) //升序排序(元素类型必须实现 Comparable 接口)
-
总结
-
集合的概念:
-
对象的容器,存储对象的对象,定义了对多个对象进行操作的常用方法。
-
-
List集合:
-
有序、有下标、元素可以重复。(ArrayList、LinkedList、Vector)
-
-
Set集合:
-
无序、无下标、元素不可重复。(HashSet、LinkedHashSet、TreeSet)
-
-
Map集合:
-
存储一对数据,无序、无下标,键不可重复,值可重复。(HashMap、HashTable)
-
-
Collections:
-