俗话说:一个东西,一件事都离不开三句话:“是什么,为什么,怎么办”
集合是什么:
集合简单的说一个数组集合的高级体现,用来存储数据或对象的容器;
集合为什么存在:
集合只是体现了对数据操作的灵活度;大大方便了开发者的效率;
集合怎么使用:
使用分了以下几种方式: Collection 集合 1.list 2.Set
List
List | 底层数据结构 | 查询 | 增删 | 线程 | 效率 |
ArrayList | 数组 | 快 | 慢 | 不安全 | 高 |
Vector | 数组 | 快 | 慢 | 安全 | 低 |
LinkedList | 链表 | 慢 | 快 | 不安全 | 高 |
Set
Set | 底层数据结构 | 有序 | 唯一 | 排序 |
HashSet | 哈希表 | 否 | 是(依赖hashCode()和equals()) | -- |
LinkedhashSet | 链表和哈希表 | 是 |
是 由链表保证元素有序 |
-- |
TreeSet | 红黑树 | -- | 是 |
a.自然排序 b.比较器排序 |
(4)Collection的功能概述
List cn=new ArrayList();
A:添加功能
add(Object e);//直接自然顺序插入
add(index, element);//按索引插入
B:删除功能
remove(index);//根据索引移除
C:判断功能
cn.contains(object e)//判断cn集合中是否存在元素e
D:获取功能
cn.get(index)//跟据索引获取值
E:长度功能
cn.size()//返回集合长度
F:交集(了解)
cn.retainAll(Collection c)//cn对c做交集
cn对c做交集 返回值是boolean值
有交集 则返回true 存在交际则cn集合中的值会返回交集值
无交集 则返回false
G:把集合转数组
cn.toArray()
(5)Collection集合的遍历
A:把集合转数组(一般不用)
遍历集合 改成 遍历数组
B:迭代器(集合专用方式)
迭代器
//创建cn集合对象的迭代器
iterator it=cn.iteraror();
while(it.hasnext())
{System.out.println(it.next())}
1:是集合的获取元素的方式。
2:是依赖于集合而存在的。
3:迭代器的原理和源码。
a:为什么定义为了一个接口而不是实现类?
简单的说:不管是哪一种集合,我们都要获取集合中的数据,并且在获取之前辅助于判断功能,也就是说在获取元素之前先进行判断,那么集合就有两个功能(判断,查询)。这样如果是实现类只能去实现某一个集合,反而接口可以做到,让子类自己去实现接口,这样就达到要求了;
(5)并发修改异常
A:出现的现象
迭代器遍历集合,集合修改集合元素
B:原因
迭代器是依赖于集合的,而集合的改变迭代器并不知道。
C:解决方案
a:迭代器遍历,迭代器修改(ListIterator)
元素添加在刚才迭代的位置
b:集合遍历,集合修改(size()和get())
元素添加在集合的末尾
(6)常见数据结构
A:栈 先进后出
B:队列 先进先出
C:数组 查询快,增删慢
D:链表 查询慢,增删快