java集合概述
对集合的理解
存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式。
集合的出现就是为了持有对象。集合中可以存储任意类型的对象, 而且长度可变。在程序中有可能无法预先知道需要多少个对象, 那么用数组来装对象的话, 长度不好定义, 而集合解决了这样的问题。
集合和数组的区别
数组和集合类都是容器
数组:
长度开始时必须指定,而且一旦指定,就不能更改
保存的必须是同一类型的元素
使用数组进行增加、删除元素的示意代码-比较麻烦
集合:
可以动态保存多个对象,使用方便
提供了一系列方便的操作对象的方法,add remove set get等
使用集合添加、删除新元素的示意代码-简洁
集合的分类
Java 集合可分为 Collection 和 Map 两种体系
collection 接口有两个重要的子接口,list set ,他们的实现子类都是单列集合
map接口的实现子类 是双列集合存放的k-v
collection接口和常用方法
接口实现类的特点:
- collection实现子类可以存放多个元素,每个元素可以是object
- 有些collection的实现类,可以存放重复的元素,有些不可以
- 有些collection的实现类,有些是有序的(list),有些是无序的(set)
- collection接口没有直接的实现子类,是通过它的子接口set和list实现的
collection接口的常用方法
- add:添加单个元素
- remove:删除指定元素
- contains:查找元素是否存在
- size:获取元素个数
- isEmpty:判断是否为空
- clear:清空
- addAll:添加多个元素
- containsAll:查找多个元素是否都存在
- removeAll:删除多个元素
遍历方式:
- Iterator迭代器
所有实现了collection接口的集合类都有一个Iterator()方法,用来返回一个Iterator接口的对象,即返回一个迭代器
Iterator仅用来遍历结合,iterator本身并不存放对象
- 增强for循环
可以替代迭代器,增强for循环就是简化版的迭代器,本质一样,只能用于遍历集合或者数组
list
list接口是collection接口的子接口
list集合类中元素有序(即添加顺序和取出顺序一致)可以去重复
list集合中每个元素都有对应的顺序索引,支持索引
list容器中的每个元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素
接口方法
实现类和扩容
Vector和ArrayList比较
ArrayList和LinkedList比较
如何选择ArrayList和LinkedList
- 如果改查的操作多,选择ArrayList
- 如果增删的操作多,选择LinkedList
- 一般来说,在程序中,80%-90%的操作都是查询,因此大部分情况下会选择ArrayList
- 在一个项目中,根据业务灵活选择,也可以这样 ,一个模块使用的是ArrayList,另外一个模块是LinkedList,也就是说,要根据业务来进行选择
set
接口方法和list接口方法一样,遍历方式和collection遍历方式一样。
1、存储元素无序,即存元素和取元素的顺序可能不一致,但第一次遍历和最后一次遍历取出元素的顺序是不变的
2、无索引,不能使用for循环遍历
3、存储元素不重复
4、遍历方式
a:迭代器
b:增强for
实现类和扩容
map
接口常用方法
put:添加
remove:根据键删除映射关系
get:根据键获取值
size:获取元素个数
isEmpty:判断个数是否为0
clear:清除
containsKey:查找键是否存在
接口实现类特点
- Map和collection并列存在,用于保存具有映射关系的数据
- Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中
- Map中的key不允许重复,原因和HashSet一样
- Map中的value可以重复
- Map 中的key可以为null,value也可以为null,注意key为null只能有一个,value为null可以有多个
- 常用String类作为Map的key
- key与value之间存在单向一对一的关系,即通过指定的key总能找到对应的value
接口实现类
Hashtable和HashMap的对比
HashMap和TreeMap存储元素不重复对比
HashMap存储元素是根据equals对比元素是否相等来决定的、
TreeMap存储元素不重复是根据compare,自定义规则来决定的
集合选型规则
collections工具类
Collections是一个操作Set List Map 等集合的工具类
Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作