Collection接口是List、Set、Queue接口的父接口
Collection接口定义了可用于操作List、Set和Queue的方法--增删改查
List接口及其实现类--ArrayList
List是元素有序并且可以重复的集合,被称为序列。
List可以精确的控制每个元素的插入位置,或删除某个位置元素
List有add()插入方法和get()获取方法
ArrayList--数组序列,是List的一个重要实现类
ArrayList底层是由数组实现的,这也是其名字的由来
List接口
List中的元素是有序的且可以重复
添加:ArrayList.add(对象),默认添加在List的最后,可以在指定位置添加 ArrayList.add(索引位置,对象),可以用get()方法取出来
ArrayList.addAll(Arrays.asList(数组对象))方法可以一次添加多个对象,Arrays.asList()就是将数组转化为一个List对象
ArrayList.get(int index) 一定要注意,a使用dd()或者是addAll()方法插入的元素一律会变成Object类型,那么使用get()方法取出时也将是Object类型的,这是接受取出的元素时,要做相应的类型强转。
类型 对象 = (类型) ArrayList.get(索引位置);//对象存入集合都变成object类型,取出时需要进行类型转换
删除:ArrayList.remove(对象或者对象在List中的索引位置)
修改:ArrayList.set(索引位置,修改内容)
通过ArrayList.size()方法可以得到List长度
可以通过foreach(元素类型 元素变量 :遍历对象名(即数组名))方法,get方法,迭代器iterator方法 遍历List
foreach方法中,元素类型固定为Object,因为放到集合中时,元素的类型被忽略了
iterator方法中,用hasNext()方法来确定是否List还有元素,有则返回true。迭代器不存储东西,依赖其他结构存在
泛型
在开发中,可以创建一个泛型来规定对象的类型。在集合中,不能添加泛型规定类型意外的对象。
泛型中除了可以添加规定的类型还可以添加规定类型的子类型。
定义子类型的时候要在父类型中添加一个无参的构造方法,否则出错,因为调用子类型的构造方法时,系统会默认调用父类的无参构造方法(super();)。
泛型集合中不能使用基本数据类型,要使用基本数据类型的包装类,即Integer,Long,Boolean。或者为引用类型List<Course> course
Set接口
Collection接口-Set接口 - 实现类HashSet
一、Set是元素【无序且不可重复】的集合,被称作集
二、HashSet——哈希集,是Set的重要实现类
***注意:与List比较
· Set的遍历只能用foreach和iterator,不能用get()方法(因为是无序表),同理,也没有set()方法
· Set中重复添加一个对象,只会保留一个,并且保留的是第一次的添加的那一个。
Set中可以添加空对象,但是一般开发中不这么用。