Java比较器Comparator接口
来源:互联网 发布:解析json为格式化 编辑:程序博客网 时间:2024/05/16 17:17
一个专用的比较器Comparator
Comparator是一个专用的比较器,当一个不支持自比较或者自比较函数不能满足要求时,可写一个比较器来完成两个对象之间大小的比较。Comparator体现了一种策略模式,即不改变对象自身,而用一个策略对象来改变它的行为。
import java.util.Comparator;import java.util.Iterator;import java.util.TreeSet;class Student { private String name; private float score; public Student(String name, float score) { this.name = name; this.score = score; } public String getName() { return name; } public float getScore() { return score; } @Override public String toString() { return String.valueOf(this.name + ": " + this.score); }}class StudentComparator implements Comparator<Student> { @Override public int compare(Student o1, Student o2) { if (o2.getScore() - o1.getScore() > 0) { return 1; } else if (o2.getScore() - o1.getScore() < 0) { return -1; } else { return 0; } }}public class ComparableDemo { public static void main(String[] args) { TreeSet<Student> set = new TreeSet<Student>(new StudentComparator()); set.add(new Student("zhangsan", 79)); set.add(new Student("lisi", 95)); set.add(new Student("wangwu", 87)); for (Iterator<Student> iter = set.iterator(); iter.hasNext();) { System.out.println(iter.next()); } }}
打印结果:
lisi: 95.0
wangwu: 87.0
zhangsan: 79.0
说明
Comparator接口有两个方法,一个是compare方法,另外一个是equals()方法,但是大多数情况下,在一个类实现Comparator接口时,是不需要重写equals方法的,这是因为这个类继承了Object的equals方法。
Comparable接口和Comparator接口的区别
- 它们两个都是用来实现集合中元素的比较、排序的。
- Comparable是在集合内部定义的方法实现的排序,位于java.util包下
- Comparator是在集合外部实现的排序,位于java.lang包下。
- 在一个又一个类设计完成后,或许我们最初没有考虑到类的比较问题,没有对Comparable接口进行实现,没有关系,我们可以通过Comparator接口来完成,并且无需改变之前完成的类的构建。
阅读全文
0 0
- Java Comparator (比较器接口 Comparator)
- Java比较器Comparator接口
- JAVA对象比较器Comparator接口
- JAVA外部比较器:实现Comparator接口
- java比较器comparable接口和comparator接口
- Java Comparable排序接口和Comparator比较器接口
- java Comparable接口与Comparator接口比较
- 对象比较器,Comparator接口
- java比较器Comparator
- Java 比较器 comparator
- java比较器Comparator
- Java中挽救的比较器--Comparator接口
- Java基础之Comparator比较器接口使用原理
- Java的比较接口 Comparable与Comparator
- JAVA对象比较器Comparator
- JAVA对象比较器Comparator
- JAVA对象比较器Comparator
- JAVA对象比较器Comparator
- 苏苏请参考:关键词一览推荐表
- 51nod 1278 相离的圆
- 记录一下“halt ,reboot ,init,shutdown的区别”
- XTU1254 Blance 如何实现称出1∼n 克的物品,请问最少需要几颗砝码?
- CodeForces 794D. Labelling Cities
- Java比较器Comparator接口
- ajax的post提交参数长度超出限制的解决办法
- 神经网络中的反向传播----Back Propagation
- nosql数据库的四大分类
- 动手实现JQuery
- 设计模式-单例模式-java
- 系统编程五
- php定时自动执行任务(后台执行)
- [servlet] 01 Servlet接口