比较器:
import java.util.Comparator;
是一个用于比较多个对象特定属性值的大小的类——也就是 设计一个类实例化其对象 会包含诸多属性值 那么排序多个对象时对于容器类来说 要利用到工具类Collections 其中的sort这个方法可以实现 但是对象属性太多没指定是按照那个 因此会报错
为解决 利用到Comparator 这个比较器 来选取特定属性值进行操作 就可以避免。
解决方式 有两种写法:
1、
在要对其实例化对象的类进行接口Comparable的方法实现 可以查看接口Comparable的源码
public int compareTo(player o)
{
if(o.passion>passion)
return 1;
else
return -1;
}
注意: 此处要重写toString 因为println 有疑问可以查看源码
以上对于Comparable 方法的实现 为什么要return 1 只是一种标识 其他数字都可以 为的是区分 当返回1的时候 是大于 否则其他数是小于
在实例化对象的类中 实现接口后 在新建的测试类中 直接Collections.sort() 就可以了。
2、
不在实例化对象的类中实现接口 在测试类里方法重载
这里就需要 对Comparator类 进行实例化对象 且写法有点像匿名类
Comparator<player> Co=new Comparator<player>() {
public int compare(player h1,player h2)
{
if(h1.passion>h2.passion)
return 1;
else
return -1;
}
};
除了以上还有更简便的写法:
Collections.sort(sd,new Comparator<player>() {
@Override
public int compare(player h1, player h2) {
return (int) (h2.hp-h1.hp);
}
});
实质就是把Co这个对象直接代替为代码块。
注意:这里的不是compareTo 而是compare 这种写法 更加清晰可观。
之后在Collections.sort()
会出现以下的情况:
把实例化的Comparator对象 放入即可。
聚合操作:
JDK 8 之后引入了对集合的聚合操作,可以非常容易的遍历,筛选,比较集合中的元素。
介于Lambda 表达式还未学习只是稍加了解