通用比较器和类的可比较性
来源:互联网 发布:vm mac共享文件夹 编辑:程序博客网 时间:2024/06/07 14:27
定义通用比较器:
package chapter11.sub07;
import java.util.Comparator;
//定义的是比较器,所以这个需要传入进去的是两个参数
public class GenericComparator<T> implements Comparator<T>{
//设置返回的值0代表相等,>0大于<0小于
@Override
public int compare(T o1, T o2) {
if(o1.equals(o2)){
return 0;
}
//把参数强制转换为Comparable类型再比较,这样的好处
//在于,如果你使用的是这个比较器,并且你在调用的时候
//传入的参数是实现了Comparable接口的类型的话,那么
//在传入比较器的时候,它就会自动的去调用被比较的类型
//里面所定义的compareTo方法
return ((Comparable<T>)o1).compareTo(o2)*-1;
}
}
定义可比较类型的类:
package chapter11.sub07;
public class Person implements Comparable<Person> {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public int compareTo(Person o) {
//正整数代表的是大于
//0代表的是相等
//负整数代表小于
return (this.age-o.getAge())*-1;
}
}
测试通用比较器为TreeSet传入通用比较器:
package chapter11.sub07;
import java.util.Iterator;
import java.util.TreeSet;
public class TestTreeSet {
public static void main(String[] args) {
//默认的treeSet排序是按照字母的顺序排序
TreeSet<String> fruits=new TreeSet<String>();
fruits.add("orange");
fruits.add("pear");
fruits.add("banana");
fruits.add("apple");
Iterator<String> it=fruits.iterator();
while(it.hasNext()) {
System.out.println(it.next().toString());
}
//Person的排序
TreeSet<Person> ps=new TreeSet<Person>(new GenericComparator<Person>());
ps.add(new Person("dada", 24));
ps.add(new Person("tongtong", 3));
ps.add(new Person("hehe", 1));
Iterator<Person> it1=ps.iterator();
while(it1.hasNext()) {
Person p=it1.next();
System.out.println("姓名:"+p.getName()+"\t年龄:"+p.getAge());
}
}
}
- 通用比较器和类的可比较性
- 可比较范围类
- 一个Windows界面的TableDiff表比较工具,可比较表记录差异
- C# 构造可比较的对象
- java 可迭代与可比较的实现
- 构建可比较对象IComparable接口和IComparer接口
- DbComparisonExpression需要具有可比较类型的参数。
- Java基本功练习十九(抽象类和接口【抽象类、接口(监听器、克隆、可比较)、包装类、有理数类实现】)
- [NA]Lab4:雅可比迭代与高斯塞德尔迭代的比较
- 一个较能通用的C#画曲线类
- 一个较能通用的C#画曲线类(转)
- Swift中实现可比较协议
- 雅可比算法求方阵的全部特征值和特征向量
- 较完美验证码通用类
- preg_match ,正则配置,可比较,可匹配存储
- Java算法学习-------插入排序算法(整数数组类型,可比较数组类型,可比较线性表类型)
- chrome插件相对开发比较重要的和我必须较喜欢的
- WebOb和通用标准实现WSGI框架的比较
- linux命令大全
- a link 标签的disabled属性实现disabled/enable
- MD5加密解密
- VC/MFC之ListCtrl控件使用经验总结
- strace中文
- 通用比较器和类的可比较性
- 如何设置socket的连接超时
- 图片的异步加载和本地缓存
- 复制行
- C++ 初学者指南 第三篇 (2) 项目3-2
- MFC中如何去掉单文档无标题的方法
- Hibernate介绍与配置文件、jar包的说明(一)
- P2S与P2P
- sensoraction