存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式。
集合的出现就是为了持有对象。集合中可以存储任意类型的对象, 而且长度可变。在程序中有可能无法预先知道需要多少个对象, 那么用数组来装对象的话, 长度不好定义, 而集合解决了这样的问题。
数组和集合类都是容器
数组:
长度开始时必须指定,而且一旦指定,就不能更改
保存的必须是同一类型的元素
使用数组进行增加、删除元素的示意代码-比较麻烦
集合:
可以动态保存多个对象,使用方便
提供了一系列方便的操作对象的方法,add remove set get等
使用集合添加、删除新元素的示意代码-简洁
Java 集合可分为 Collection 和 Map 两种体系
collection 接口有两个重要的子接口,list set ,他们的实现子类都是单列集合
map接口的实现子类 是双列集合存放的k-v
所有实现了collection接口的集合类都有一个Iterator()方法,用来返回一个Iterator接口的对象,即返回一个迭代器
Iterator仅用来遍历结合,iterator本身并不存放对象
可以替代迭代器,增强for循环就是简化版的迭代器,本质一样,只能用于遍历集合或者数组
list接口是collection接口的子接口
list集合类中元素有序(即添加顺序和取出顺序一致)可以去重复
list集合中每个元素都有对应的顺序索引,支持索引
list容器中的每个元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素
接口方法和list接口方法一样,遍历方式和collection遍历方式一样。
1、存储元素无序,即存元素和取元素的顺序可能不一致,但第一次遍历和最后一次遍历取出元素的顺序是不变的
2、无索引,不能使用for循环遍历
3、存储元素不重复
4、遍历方式
a:迭代器
b:增强for
put:添加
remove:根据键删除映射关系
get:根据键获取值
size:获取元素个数
isEmpty:判断个数是否为0
clear:清除
containsKey:查找键是否存在
HashMap存储元素是根据equals对比元素是否相等来决定的、
TreeMap存储元素不重复是根据compare,自定义规则来决定的
Collections是一个操作Set List Map 等集合的工具类
Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作