前言
什么是集合?
对象的容器,实现类对对象常用的操作
和数组的区别
1.数组长度固定,集合长度不固定
2.数组可以存储基本类型和引用类型,集合只能存储引用类型
一、Collection父接口
二、List子接口
2.1 List
2.2 LinkList
双向链表结构实现,无序连续空间,增删快,查询慢
2.3 Vector
数据结构实现,查询快,增删慢
jdk1.0版本,运行效率慢,线程安全
2.4 ArrayList
三、Set集合
特点:无序,无下标,元素不可重复
方法:全部继承自Collection中的方法
增、删、遍历、判断与Collection一致
3.1 HashSet
存储结构:哈希表(数组+链表+红黑树)
存储过程(重复依据):
1.根据hashCode计算保存的位置,如果位置为空,直接保存,若不为空,进行第二步
2.再执行equals方法,如果equals为true,则认为是重复,否则形成链表
特点:
基于HashCode计算元素存放位置
1.利用31这个质数,减少散列冲突
31提高执行效率 31 * i = (i << 5)- i转为移位操作
2.当元素的哈希码相同时,会调用equals进行确认,如果结果为true,则拒绝后者存入
新建集合: Hash<String> hashSet = new HashSet<String>();
添加元素:hashSet.add();
删除元素:hashSet.remove();
3.2 TreeSet
四、Map
4.1 TreeMap
4.2 HashMap
五、泛型
5.1 泛型类
5.2 泛型接口
语法:接口名 注意:不能泛型静态常量
5.3 泛型方法
六、Collections工具类
概念:集合工具类,定义了除了存取以外的集合常用方法
直接二分查找 int i = collections.binarSearch(list,x) ;成功返回索引
其他方法:copy复制,reverse反转,shuffle打乱