2020-11-05

集合
在这里插入图片描述
1集合只能存储引用类型
注意:虽然集合不能存储基本数据类型,但是可以存储基本数据类型的包装类类型

2.集合顶层父类为什么设计成接口而不设计成普通类?
因为我们认为容器中的元素有不同的特点:
a.是否有序 【存储有序,怎么样存进去的就怎样出来】
b.是否唯一
c.是否可以存储null值
d.是否可排序
e.是否安全
f.容器存取的效率
数据结构 【数据的存储方式】
针对不同的特点会有不同的实现,那么这个时候父类必须设计成接口,子类根据不同的数据结构和实现方式实现自己的增删查改的功能,所以父类设计为接口。

collection接口

特点
1 单列集合的根接口
2 接口中,部分集合有序,可重复【list】,部分集合无序【set】
3 无具体实现
遍历方法
Objict[] toArray() 将集合转换成数组
T[] toArray(T[] a)泛型方法,将集合转换成数组
Iterator iterator()返回在此collection的元素上进行迭代的迭代器
For(元素类型 元素名 : 集合) {
通过元素名操作元素;
}
1.foreach简化遍历
2.Foreach本质还是使用了迭代器

## Collection集合去除重复元素

1.创建一个新的集合,然后使用地址传递
(1)如果比较的是系统类,String 不需要重写equals方法
(2)如果比较的是自定义对象,需要自己根据需求重写equals方法

泛型

泛型的特点
1.泛型具备传递性
2.泛型可以定义多个
3.泛型只能设置引用数据类型
4.泛型命名可以是A~Z之间
泛型的分类
泛型类: 把泛型定义在类上
泛型接口: 把泛型定义在接口上
泛型方法: 把泛型定义在方法上
泛型的好处
1.消除了黄色警告线
2.去除类型转换,提高了效率
3.提高了安全性,避免了类型转换异常
4.简化了代码
5.提高了代码的扩展和可维护性
泛型限定符

<?> : 代表任意类型 <? extends E>: 代表泛型可以是E类型或者E的子类 <? super T>: 代表泛型可以是 T类型或者是 T 的父类