王金阳总结(day17)

2021-06-09 20:25发布

1.泛型概念

1.使用场景:在使用集合的时候 不确定其数据类型的时候就可以使用泛型。

泛型就是一个变量,用于来接收其数据类型

2.泛型的使用:

   实例化集合的时候可以明确其数据类型

   List<数据类型> li  = new  ArrayList<数据类型>();

3.泛型使用的注意点:

   (1) 泛型前后的数据类型必须一致

       例子: List<String> li  = new ArrayList<String>();

   (2) jdk1.7之后出现菱形泛型 后面的数据类型可以省略

       例子: List<String> li  = new ArrayList<>();

   (3) 泛型的数据类型必须是引用数据类型 不能是基本数据类型

4.泛型的好处:

   (1) 避免强制类型转换

   (2) 可以将运行时异常提前到编译期间

5.泛型使用的一些字母

   定义泛型使用的字母都是大写 通常使用的字母 T W  K  V  Z E  .....

2.定义泛型类

1.语法:

   访问修饰符  class  类名<泛型>{

       类中的成员都可以使用这个泛型

   }

3.定义泛型方法

1.语法:

  访问修饰符 <泛型> 返回值类型 方法的名称(参数列表) {

     方法体

     return 返回值

  }

2.静态方法可以设置泛型 普通的成员方法也可以设置泛型

3.注意点

   普通成员方法可以使用类定义的泛型

   静态方法是不可以使用类定义的泛型  静态方法优先于对象而存在

4.定义泛型接口

1.使用的场景:

 (1)实现类确定其泛型

 (2)实现类不确定其泛型  继续使用接口的泛型

5.泛型的通配符

1.概念:泛型的通配符是使用?来进行表示 ?可以表示任意的数据类型  

实例化对象的时候 不能使用?来表示泛型

一般用于作为方法的参数来使用 泛型没有继承的概念

2.三种常见的通配符使用

    containsAll(Collection<?> c) ?在参数列表中使用 表示的是任意的数据类型(常用)

   <? extends E> 表示泛型的范围是其本身E 或者是其子类

   <? super T>  表示泛型的范围其本身T 或者是其父类

6.Collections集合的工具类

方法的名称

方法的说明

public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)

查找指定元素在集合中索引值(集合一定是按照升序进行排列)

public static <T> void copy(List<? super T> dest, List<? extends T> src)

将所有元素从一个列表复制到另一个列表(dest目标数据必须指定长度(需要给一些默认值))

public static <T> void fill(List<? super T> list, T obj)

使用指定元素替换指定列表中的所有元素

public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)

获取集合中最大值

public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)

获取集合中最小值

public static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)

使用另一个值替换列表中出现的所有某一指定值

public static void reverse(List<?> list)

控制反转

public static void shuffle(List<?> list)

随机置换集合中的元素

public static <T extends Comparable<? super T>> void sort(List<T> list

集合中的元素进行升序排列

public static void swap(List<?> list, int i, int j)

在指定列表的指定位置处交换元素

public static <T> List<T> asList(T... a)

数组Arrays工具类的方法 将数组转换为集合