周末让我们动起来!超越他人的好时光怎么能这样虚度!小编继续刷起来,啦啦啦。今天又为大家带来两个例子,let's go!
第一发,简化的CompareTo方法,其实这个并不是很常用,因为我们在做数据提取的时候可以在数据库中很容易的用order by语句来达到排序效果,但是小编还是想给大家介绍一下Commons.Lang包下的CompareToBuilder类,与以往重写CompareTo方法不同的是,我们不需要再去手写比较属性之间的具体关系,通过返回值的正负来确定元素的位置。
一般我们需要重写CompareTo方法时都是需要根据对象中的某些属性排序,但是当我们要进行综合排序时,如果还要自己手写逻辑关系那就会很繁杂,我们可以直接调用Commons.Lang包下的CompareToBuilder类的append方法来实现,而且可以根据append的先后顺序来制定排序的优先级,是不是很方便呢?下面来看实例吧。
首先要做的第一步当然是实现Comparable接口然后指定泛型
接下来就是重写方法,为方便大家查看,小编把代码折行了,上文中说过了,append的顺序会影响,排序的优先级,即id出现重复时,通过name的比较来决定顺序(id通常为主键,不会重复,本例中请忽略该问题)
我们通过结果可以看到,首先通过id,将Java和PHP放在了后面,且PHP在Java之前,及时J的自然序列在P之前顺序也不会发生变化。对于两条Ruby,因为前两个属性的信息完全一致,则会根据age来决定最后的顺序。那么,大家对于一些常用的工具类(外部jar包)也要有一定的了解,可以提高工作效率。
第二发,跟大家说说静态内部类,对于这么个不常用的东西先说说他的概念。静态内部类就是使用static修饰的内部类,在静态内部类中,可以使用外部类定义的静态域,但是不能使用非静态域。通俗的说这个类是定义在class的内部,而不是同级,使用规则与静态非静态互相调用的规则一致。那么以下这个小例子中我们借助静态内部类的结构同时返回一个数组中的最大值与最小值。大家知道,在一个方法中如果想同时返回两个变量,一般情况下我们只能借助数组或集合或者实体类,这里采用的就是第三种,来看一下代码。
这是静态内部类的结构,它处在class的大括号内部
大家可以看到getResult方法返回的是一个内部类的对象,立面包含了我们所需要的两个变量,我想这里应该没有难于理解的地方。
好啦,大家在周末休闲的同时也要努力学习哦,只有赢在别人休息的时刻,才会取得成功!