1.单列集合顶层接口Collction
集合体系结构
注意:因为Collection定义的方法是共性的,使用不能通过搜引来删除,只能通过元素的对象进行删除,返回值是boolean类型。例如我添加了"aaa"进List集合,删除则要对象名.remove("aaa");
2.迭代器
迭代器遍历:
迭代器遍历的使用:
注意:下面的1.没有元素异常 下面的2.如果想遍历第二遍则需要在定义一个对象
如果删除集合的元素,要么就在迭代器定义之前删除,要么就在迭代器遍历的时候,用迭代器删除的方式进行删除,该删除不会删除集合里的元素,只会删除迭代器里面的元素。
3.增强for遍历
上方的s是指第三方变量
4.Lambda表达式遍历
三种通用的遍历方式:
5.List中常见的方法和五种遍历方式
List特有方法:(index指搜引,element指对象)
注意:add的添加是在指定位置进行添加,如果原有位置有元素存在,则往后移动(是后面的所有元素往后移动)
List的五种遍历方式:迭代器遍历,列表迭代器遍历,增强for遍历,Lambda表达式遍历,普通for遍历(因为List集合存在索引)
其余两种遍历方式:
5种的if语句是在集合里元素”bbb“的后面添加元素”qqq“;
6.泛型类,泛型方法,泛型接口
比如:此时的泛性是String,所有只能添加String类型的数据
泛型类:
当我们在main函数中运行的时候,可以给E继续数据类型的赋值,这里赋值为String,代表E就是String,所有在main输入时候就的输入String类型的数据,在MyArrayList中也是把E当作String来看的。
泛型方法:
当方法中形参类型不确定时有以下方案:
1.使用类名后面定义的泛型(所有方法都适用)
2.在方法申明上定义自己的泛型(只有本方法能用)
泛型接口:
它的两种使用方式:
1.实现类给出具体的类型
2.实现类延续泛型,创建实现类对象时再确定类型
1.
2.左边创建对象时候定义Stri
ng
7.set集合中的HashSet和Treeset
set序列集合:添加的元素是无序,不重复,无搜引的
无序:存取顺序不一样
不重复:可以去除重复
无搜引:没有带搜引的方法,所有不能使用普通遍历for循环,也不能通过搜引获取元素
set集合的实现类:
HashSet:无序,不重复,无搜引LinkedHashSet:有序,不重复,无搜引
TreeSet:可排序,不重复,无搜引
Set接口中的方法基本上与Collection的API一致
set演示:
HashSet:
哈希值:对数的整数表现形式
Alt加Insert出现,并选择蓝标,让系统自动重写方法,此时性值一样计算出哈希值就是一样的了。
HashSet的底成原理:
LinkHashSet底层原理:
使用的是双向链表,所以可以保证存储顺序是有序的。
光去重的话,HashSet的时间,空间复杂度更低!(单链表)