什么是集合
概念:对象的容器,定义了对多个对象进行操作的常用方法。可以实现数组的功能。
和数组的区别
数组长度固定,集合长度不固定
数组可以存储基本类型和引用类型,集合只能存储引用类型
进行集合接口的学习时候,多看JDK的API。里面有很多方法,可以自己研究。
Collection体系集合
iterator()是collection的元素上进行迭代的迭代器。
Collection实践
1、添加元素
2、删除元素
3、遍历元素
4、判断
首先创建一个集合,并添加元素。
删除元素、与清空元素
判断集合是否包含这个元素
集合遍历
使用增强for(增强for不需要下标,普通for需要下标,但是collection是没有下标的)
两种方法:
第一种:增强for
第二种:迭代器 Iterator,对collection的迭代器(迭代就是循环或者遍历)
通过上面的三个方法实现集合的遍历迭代。
增强for的代码如下:
迭代器代码如下:
迭代过程当中,是不允许使用collection的删除方法的。
迭代器要求在迭代过程中,不可以使用集合的其他方法来并发修改。
如果想删除的话,那么就可以用迭代器自己的方法,改成it.remove()就可以了。
Collection:保存信息
注意删除collection中的对象remove时候是不会删除是s1本身的,因为集合中存的是地址。
s1本身是在堆中的。
增强for中用一个强转换。
注意这里判断是否包含中(new。。)是行不通的。
List子接口
特点:有序的、有下标、元素可以重复。
list中多了两个迭代器。
list子接口的使用
list的遍历1:for遍历
lisit的遍历2:使用增强for
list的遍历3:使用迭代器
list的遍历4:列表迭代器
list案例
注意这里的20不是基本类型的20.而是Interger类型的20.因为集合是不能装基本类型的,所以被进行了自动装箱。
同时注意remove(20)是删除第20个位置的,而不是删除20这个对象。
如果一定想使用20来删除,需要装箱来删除。list.remove(new Integer(20));就可以做到了。
而这里之所以能使用new来删除,是因为整数缓冲的原因。
关于整数缓冲是因为自动装箱自动为-127-127准备了自动装箱,地址是一样的,直接进行已经有的对象进行了复用。