【JavaSE】三个重要接口总结

在学习完Java接口后,发现有三个接口是比较重要的,并且是经常使用的接口,下面进行总结。

1:Comparable接口

Comparable接口是泛型类接口,一个类创建的时候用implements来接Comparable<>,并在尖括号里面传入需要比较的类,且重写compareTo方法,重写compareTo方法是为了后续对该类进行排序要所要依靠什么来排序,例如下面进行age排序,默认情况下,this在前,o在后所差得到的是从小到大排序。

 但是所比较的类型是String的时候,需要用到String类里面的比较方法,而不是直接加减:

即:当进行二者做差或者通过compareTo方法得到的数值是大于0则进行从小到大排序,当为小于0则进行从大到小排序。

但是这样如此修改类里面的变量会使得操作者对类的侵入性较强,所以下面介绍一种接口,不需要在待排序的对象里面修改需要排序的依据,而是直接自行定义一个比较器。

2:Comparator接口

Comparator也是接口,需要用implements关键字进行接入,跟上述Comparable接口一样,是泛型接口,需要在尖括号里面传入需要排序的类,定义方式如下:

 比较器在优先级队列中很常见,如图:

 3:Cloneable接口

该接口是一个空接口,即又名标记接口,里面没有方法意味着不需要重写该接口的方法。

但是该接口是必要的,因为一个类可以被克隆的条件是接入Cloneable接口,意味着该类可被克隆,然后因为所有的类都是继承于Object类,在Object类里面有一个clone()方法,所以我们可以 重写clone()方法:

 

这样子该自定义的类就可以使用clone()方法了,然后在克隆里面有区分深克隆和浅克隆。

浅克隆:意思是在一个类中,若类里面的成员变量没有引用对象,则直接将该类进行克隆,克隆方法如下:

 深克隆:如果一个类里面还有其他的类对象,此时使用以上方法克隆的话,不能将作为成员变量的对象进行拷贝,而只是原班不动地复制引用地址,所以,深度克隆就意味着不只是将该类进行克隆,还要将该类里面的作为成员变量的对象进行克隆:

 红圈圈起来的就是作为成员变量的对象,需要将其进行克隆的话,也要将该类变成可克隆的,因此也需要接入接口Cloneable接口,然后重写Object类的clone方法:

 然后进行克隆:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值