------- android培训、java培训、期待与您交流! ----------
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类。
集合的继承体系结构: 由于需求不同,Java就提供了不同的集合类。这多个集合类的数据结构不同,但是它们都是要提供存储和遍历功能的,我们把它们的共性不断的向上提取,最终就形成了集合的继承体系结构图。
Collection
|--List
|--ArrayList
|--Vector
|--LinkedList
|--Set
|--HashSet
|--TreeSet
集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
一、Collection:是集合的顶层接口
Collection的功能概述:
1:添加功能
booleanadd(Object obj):添加一个元素
booleanaddAll(Collection c):添加一个集合的元素
2:删除功能
voidclear():移除所有元素
booleanremove(Object o):移除一个元素
booleanremoveAll(Collection c):移除一个集合的元素(是一个还是所有)
3:判断功能
booleancontains(Object o):判断集合中是否包含指定的元素
booleancontainsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有)
booleanisEmpty():判断集合是否为空
4:获取功能
Iterator<E>iterator()(重点)
5:长度功能
intsize():元素的个数
面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?
6:交集功能
booleanretainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?
7:把集合转换为数组
Object[]toArray()
二、List接口:
List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现List接口的对象成为List集合。在List集合中允许出现重复元素,所有的元素是一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素,另外List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。
List集合的特有功能:
A:添加功能
void add(int index,Objectelement):在指定位置添加元素
B:获取功能
Object get(int index):获取指定位置的元素
C:列表迭代器
ListIterator listIterator():List集合特有的迭代器
D:删除功能
Object remove(int index):根据索引删除元素,返回被删除的元素
E:修改功能
Object set(int index,Objectelement):根据索引修改元素,返回被修饰的元素
List的子类特点
ArrayList: 底层数据结构是数组,查询快,增删慢 线程不安全,效率高
Vector: 底层数据结构是数组,查询快,增删慢 线程安全,效率低
LinkedList: 底层数据结构是链表,查询慢,增删快 线程不安全,效率高
三、Set接口:
Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口在功能上进行扩充,只是比Collection接口更加严谨。与List接口不同的是,Set接口中的元素无序,并且都会以某种规则保证存入的元素不重复出现。Set集合主要有两个实现类,分别是TreeSet和HashSet。
HashSet集合
A:底层数据结构是哈希表(是一个元素为链表的数组)
B:哈希表底层依赖两个方法:hashCode()和equals()
执行顺序:
首先比较哈希值是否相同
相同:继续执行equals()方法
返回true:元素重复了,不添加
返回false:直接把元素添加到集合
不同:就直接把元素添加到集合
C:由hashCode()和equals()保证元素唯一性
D:开发的时候,代码非常的简单,自动生成即可。
E:HashSet存储字符串并遍历
F:HashSet存储自定义对象并遍历(对象的成员变量值相同即为同一个元素)
TreeSet集合
A:底层数据结构是红黑树(是一个自平衡的二叉树)
B:保证元素的排序方式
a:自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
b:比较器排序(集合具备比较性)
让集合构造方法接收Comparator的实现类对象
四、Map集合
Map集合和Collection集合的区别:
Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。
注意:
Map集合的数据结构值针对键有效,跟值无关
Collection集合的数据结构是针对元素有效
Map集合的功能概述:
1:添加功能
V put(K key,V value):添加元素。
如果键是第一次存储,就直接存储元素,返回null,如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
2:删除功能
void clear():移除所有的键值对元素
V remove(Object key):根据键删除键值对元素,并把值返回
3:判断功能
boolean containsKey(Object key):判断集合是否包含指定的键
boolean containsValue(Object value):判断集合是否包含指定的值
boolean isEmpty():判断集合是否为空
4:获取功能
Set<Map.Entry<K,V>>entrySet()
V get(Object key):根据键获取值
Set<K> keySet():获取集合中所有键的集合
Collection<V> values():获取集合中所有值的集合
5:长度功能
int size():返回集合中的键值对的对数