本文共 2271 字,大约阅读时间需要 7 分钟。
集合框架是用于表示和操纵集合的统一体系结构,其中包含了多个功能强大的集合对象,集合用于存储、检索和操纵数据。
集合框架的优点:
提供有用的数据结构和算法,从而减少编程工作 提高了程序速度和质量,因为它提供了高性能的数据结构和算法 可以方便地扩展或改写集合Collection接口只存值,无序,可重复,能存null
Collection接口又包含了List接口和Set接口
List接口有序,可重复,能存null
实现List接口的有Vector类、ArrayList类、LinkedList类
① Vector类:
它具有类似数组的数据结构,而且是动态的,容量可以递增 可以存储重复元素,其元素是有序排列的 线程安全的,可以进行多线程操作Vector的构造方法:
Vector () —— 创建一个空Vector Vector (int initialCap) —— 创建一个空 Vector ,其初始大小由 initialCap 指定,容量增量为0 Vector (int initialCap,int inc) —— 创建一个空 Vector ,初始容量由 initialCap 指定,容量增量由 inc 指定 Vector (Collection c) —— 创建一个包含给定集合元素的新Vector ,元素顺序为集合迭代器返回的顺序Vector的常用方法:
add(Object o) —— 向Vector中添加一个对象 get(int i) —— 返回指定索引的元素 remove(int i) —— 删除指定索引的元素 indexOf(Object o) —— 查询对象的索引 removeAllElements() —— 删除所有的元素 size() —— 包含的元素大小 isEmpty() —— 是否为空② ArrayList类:
ArrayList对象是长度可变的对象引用数组,类似于动态数组 ArrayList是线程不安全的,不能进行多线程操作 继承AbstractList并实现List接口 遍历时多使用下标进行遍历ArrayList的构造方法:
ArrayList() —— 创建一个空 Arraylist ArrayList(Collection c) —— 根据给定集合的元素创建数组列表 ArrayList(int size) —— 使用给定大小创建一个数组列表,向数组列表添加元素时,此大小自动增加ArrayList的常用方法:
add(Object o) —— 向ArrayList中添加一个对象 get(int i) —— 返回指定索引的元素 remove(int i) —— 删除指定索引的元素 clean() —— 清除ArrayList中的所有元素 indexOf(Object o) —— 查询对象的索引 size() —— 包含的元素大小 isEmpty() —— 是否为空③ LinkedList类:
是用双向链表实现的动态数组,理论上会更快 构造方法和常用方法与ArrayList差不多指路之前的帖子,里面的面试题就是Vector、ArrayList、LinkedList的区别,很重要建议大家去看下:
Set接口无序,不可重复,能存null
实现Set接口的常用的有HashSet类、LinkedHashSet类、TreeSet类
以集合的方式存储元素 不能重复存储相同的元素 不保证其元素的存储顺序,遍历时使用Iterator迭代器指路之前的帖子,里面的第一个面试题就是List和Set的区别,很重要建议大家去看下:
Map接口是键值对存储,键值对不能重复,值可重复,无序,不能存null
实现Map接口的常用的有HashMap类、Hashtable类
① HashMap类:
用于存储键/值(key/value)对应关系 ArrayList是线程不安全的,不能进行多线程操作 不保证其元素的存储顺序 可以存储Null值HashMap的构造方法:
HashMap() —— 创建一个具有默认容量和负载系数的空映射 HashMap(int size) —— 创建一个具有指定大小的容量和默认负载系数的空映射 HashMap (Map map) —— 创建一个具有指定 map 映射的散列映射 HashMap(int size, float load) —— 创建一个具有指定的容量和指定的负载系数的空映射HashMap的常用方法:
put(Object o, Object o) —— 按键/值对应关系向HashMap中存储元素 get(Object o) —— 按键取出元素 remove(Object o) —— 删除指定键的元素 clean() —— 清除HashMap中的所有元素 size() —— 包含的元素大小 isEmpty() —— 是否为空② Hashtable类:
不可以存储Null值 线程安全的,可以进行多线程操作 遍历的时候可以使用枚举类型转载地址:http://ynalf.baihongyu.com/