1.list集合
1)三个子类
List接口:实现了集合中有序,可重复,可为空的特性
其提供了很多的子类--通过不同的方式实现
重点--Vector ArrayList LinkedList子类
1.list接口的子类---Vector
实现增长的对象数组
使用对象方法:存储 移除 搜索
内部数组实现数据存储
是线程安全 同步
2.list接口的子类---ArrayList
大小可变的数组
功能上等同于Vector
使用:【存储 获取】移除
此类是不同步的
不考虑安全的时候:
ArrayList用于替代Vector
3.list接口的子类---LinkedList
使用双向列表的方式实现列表
是不同步的
使用:存储 获取 【删除 插入】
2)遍历
1.常规的for循环
2.使用实现迭代器接口功能 iterable
每一个集合中都有一个方法iterator()
用于获取迭代器,迭代中有方法用于获取数据
3.增强for循环 foreach
语法:
for(元素类型 临时变量:集合){
}
3)数据类型
没有指定数据类型的时候:
可以往集合中存储任意数据
为什么?
---因为默认存储的数据类型是Object
新的问题
---集合中存储了多种类型数据的时候,在使用时,无法辨别存储到集合中对应数据的类型,所以当具体使用的时候,就没有办法从Object转化成对应类型,就会带来很严重的问题
如何解决类型问题?
---使用一种技术处理对象存储数据类型的问题:泛型
泛型概念:参数化,模糊类型,具体的类型让使用者自己定义
泛型对应的类型必须是类---集合中只能存储对象
备注:后期使用的时候建议使用泛型,指定类型
2.set集合
1)概念:
不包含重复元素,包含一个null值
2)子类:
HashSet和TreeSet 只能使用迭代器和foreach遍历
3)HashSet子类
不重复,无序,跟HashMap实现,不同步
哈希表进行数据存储 所以不能使用索引处理
去重的方式:去掉前面,保留后来的
4)TreeSet子类
不重复 自动排序 不同步的
TreeMap实现
5)set集合的总结
是使用map集合实现,他出现的原因也是Map
主要功能:
存储数据
无法单独取出数据,只能遍历数据,因为无法判定对应数据的位置
可以删除数据
可以获取大小
附加功能:
去重 排序【自然顺序】
3.Map集合
1)Map集合的概念:
将键映射值得对象,键是不可以重复,一个键只能映射一个值
允许为空
值允许重复
是一个接口 用于存储键值对
2)子接口
HashMap TreeMap
HashTable和LinkedHashMap
3)HashMap
哈希表的实现方式
键值对的存储
允许key和value都为null
无序
4)map集合遍历--转化成set集合--通过set集合去遍历
5)TreeMap--多了一个排序【对key进行自然顺序排序】
4. Collections类
补差补缺:
不同步---让其同步
不能排序---可以帮着排序
翻转集合元素 获取最大值和最小值