• Java攻略集合之泛型


    泛型

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

    泛型的好处:

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

    2、避免了强制类型转换

    泛型可以使用的地方:

    类后面——泛型类

    方法声明上——泛型方法

    接口后面——泛型接口

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

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

    泛型的定义格式:

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

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

    比如:   

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

    比如:

    泛型类的定义格式:

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

    范例:public class Generic  { }

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

    泛型方法

    泛型方法的定义格式:

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

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

    泛型接口

    泛型接口的使用方法:

    1、实现类也不给泛型

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

    泛型接口的定义格式:

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

    范例:public interface Generic{ }

    类型通配符

    类型通配符:

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

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

    类型通配符上限:

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

    类型通配符下限:

    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方法,根据返回值进行排序

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

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

  • 相关阅读:
    【微服务专题】Nacos详解
    JSONUtil.parse将java对象转为json时,需要在java对象中设置get、set方法
    【图像去噪】基于matlab偏微分方程PDE图像去噪【含Matlab源码 1890期】
    【答 疑 记 录】基于 经典全连接神经网络的(cat、dog、panda分类)
    alexnet pytorch模型和onnx模型速度对比
    3.18 悟透了这三条,能让你的小红书运营能力更上一层楼【玩赚小红书】
    vue3+ts,处理树形结构数据
    分布式存储分层:构建高效可靠的数据存储体系
    huggingface/transformers 用Trainer 和 不用Trainer
    【PAT甲级 - C++题解】1014 Waiting in Line
  • 原文地址:https://blog.csdn.net/qq_57767445/article/details/127749741