Java攻略集合之泛型

泛型

概述:是JDK5中引入的特性,它提供了编译时类型安全检测机制

泛型的好处:

1、把运行时期的问题提前到了编译期间

2、避免了强制类型转换

泛型可以使用的地方:

类后面——泛型类

方法声明上——泛型方法

接口后面——泛型接口

如果一个类的后面有<E>,表示这个类是一个泛型类。

创建泛型类的对象时,必须要给这个泛型确定具体的数据类型

泛型的定义格式:

1、<泛型> :指定一种类型的格式

尖括号里面可以任意书写,按照变量的定义规则即可,一般只写一个字母

比如:<E> <T> <Q> <M>

2、<类型1,类型2...>:指定多种类型的格式,多种类型之间用逗号隔开。

比如:<E,T> <Q,M> <K,V>

泛型类的定义格式:

格式:修饰符 class 类名<类型> { }

范例:public class Generic <T> { }

此处T可以随便写为任意标识,常见的如T,E,K,V等形式的参数常用于表示泛型

泛型方法

泛型方法的定义格式:

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

范例:public <T> void show(T t) { }

泛型接口

泛型接口的使用方法:

1、实现类也不给泛型

2、实现类确定具体的数据类型

泛型接口的定义格式:

格式:修饰符 interface 接口名<类型> { }

范例:public interface Generic<T>{ }

类型通配符

类型通配符:<?>

ArrayList<?>:表示元素类型未知的ArrayList,它的元素可以匹配任何的类型

但是并不能把元素添加到ArrayList中了,获取出来的也是父类类型

类型通配符上限:<? extends 类型>

比如:ArrayList<? extends Number> : 它表示的类型是Number或者其子类型

类型通配符下限:<? super 类型>

Set集合概述和特点

Set集合特点

可以去除重复

存取顺序不一致

没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取,删除Set集合里的元素

TreeSet集合概述和特点

TreeSet集合特点

1、不包含重复元素的集合

2、没有带索引的方法

3、可以将元素按照规则进行排序

自然排序Comparable的使用

1、使用空参构造创建TreeSet集合

2、自定义的Student类实现Comparable接口

3、重写里面的compareTo方法

自然排序简单原理图

1、如果返回值为负数,表示当前存入的元素是较小值,存左边

2、如果返回值为0,表示当前存入的元素跟集合中元素重复类,不存

3、如果返回值为正数,表示当前存入的元素是较大值,存右边

比较器排序Comparator的使用

1、TreeSet的带参构造方法使用的是比较器排序对元素进行排序的

2、比较器排序,就是让集合构造方法接收Comparator的实现类对象,重写compare(T o1,T o2)方法

3、重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写

两种比较方式小结

自然排序:自定义类实现Comparable接口,重写compareTo方法,根据返回值进行排序

比较器排序:创建TreeSet对象的时候传递Comparator的实现类对象,重写compare方法,根据返回值进行排序

在使用的时候,默认使用自然排序,当自然排序不满足现在的需求时,使用比较器排序

以上就是我的分享,有什么不对的地方,欢迎在评论区中指出,我定会虚心修改!


版权声明:本文为qq_57767445原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>