理解泛型概念和作用

泛型作用

如果没有泛型看做Object类型,任何类型的数据都可以添加到集合中,在运行时强制转换就报错啦!
image.png

有泛型

image.png

泛型概念

是JDK1.5中引入的特性
参数化类型,不确定的类型,用这个这个类型可以随意变化

泛型的格式

<名称>
image.png

泛型的好处

限定集合只能存储一种类型
避免了类型转换异常

注意

泛型只支持引用数据类型

1掌握泛型类的使用

泛型分类

类后面———>泛型类

image.png
泛型类格式—>修饰符 class 类名 <名称> {}
示例:public class ArrayList {}
此处T可以随便写,相当于变量名,常见的如T、E、K、V等。

泛型类的原理

创建泛型类的对象时,必须要给这个泛型确定具体的数据类型。把出现泛型变量的地方全部替换成传输的真实数据类型。

泛型精髓

1.定义类时不确定数据类型,使用泛型
2.使用类时指定泛型的类型

方法上———>泛型方法

image.png

泛型方法的定义格式

修饰符 <名称> 返回值类型 方法名(名称 变量名) {}

示例

public void show(T t) {}

作用

方法中可以使用泛型接收一切实际类型的参数,方法更具备通用性。

接口后面———>泛型接口

2.掌握泛型接口的使用

泛型接口的定义格式

修饰符 interface 接口名 <名称> {}

示例

public interface Swimmable {}

使用方式有两种

1.定义实现类时指定泛型类型
2.定义实现类时接着使用泛型
image.png

3.了解型通配符的使用

image.png

小结

1.泛型通配符?
泛型可以是任意类型

泛型的上下限

<? extends Number>: 泛型可以是Number及其子类, 向上限定
<? super Number>: 泛型可以是Number及其父类, 向下限定
image.png

image.png

可变参数

掌握可变参数的使用

可变参数格式 修饰符 返回值类型 方法名(数据类型… 变量名) { }
image.png

可变参数好处

参数的数量可以变化
可以简化代码,避免写很多重载的方法。

可变参数的注意事项

1.一个方法中只能有一个可变参数
2.可变参数需要在参数列表的最后面

总结

image.png

Collections集合工具类

Collections介绍

Collections并不属于集合,是用来操作集合的工具类。他里面有很多方法, 帮我们我方便操作集合, 构造器被私有啦,我们通过类名去调用它的静态方法。

Collections常用的API

)//给集合对象批量添加元素
public static boolean addAll(Collection<? super T> c, T… elements)
Collections.addAll(list, 1, 2, 3, 4, 5);
//打乱List集合元素的顺序
public static void shuffle(List<?> list)
//将集合中元素按照默认规则排序
public static void sort(List list)
示范;Collections.sort(list);
//将集合中元素按照指定规则排序
public static void sort(List list,Comparator<? super T> c)//比较器
Collections.sort(list, new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1; // 降序,从大到小
o1-o2//这个是从小到大叫升序
}
});