java中TreeSet的Comparator比较器的三种使用方法
2016-04-06 15:49
429 查看
java中treeset使用Comparator进行比较的三种方法
1.让元素具备比较性。
比如我们比较两个人。我们定义一个person类,并且实现Comparable接口
例:
public class Person implements Comparable{
private int age;
private String name;
}
2.第二种是写个类实现Comparator接口
例:
然后在new Set的时候放进去。如
TreeSet ts = new TreeSet(new myComparator());
3.第三种写内名内部类方法如:
1.让元素具备比较性。
比如我们比较两个人。我们定义一个person类,并且实现Comparable接口
例:
public class Person implements Comparable{
private int age;
private String name;
public Person(){} public Person(int age, String name) { this.age = age; this.name = name; } public int getAge() { return age; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } @Override public int compareTo(Object o) { if (!(o instanceof Person)) throw new RuntimeException("不是人对象"); Person p = (Person) o; if (this.age > p.age) return 1; if (this.age == p.age){ return this.name.compareTo(p.name); } return -1; }
}
2.第二种是写个类实现Comparator接口
例:
class myComparator implements Comparator{ @Override public int compare(Object o1, Object o2) { Person p1 = (Person) o1; Person p2 = (Person) o2; int num = p1.getName().compareTo(p2.getName()); // 0的话是两个相同,进行下一个属性比较 if (num == 0){ return new Integer(p1.getAge()).compareTo(new Integer(p2.getAge())); } return num; } }
然后在new Set的时候放进去。如
TreeSet ts = new TreeSet(new myComparator());
3.第三种写内名内部类方法如:
TreeSet ts = new TreeSet(new Comparator() { @Override public int compare(Object o1, Object o2) { Person p1 = (Person) o1; Person p2 = (Person) o2; int num = p1.getName().compareTo(p2.getName()); if (num == 0){ return new Integer(p1.getAge()).compareTo(new Integer(p2.getAge())); } return num; } });
相关文章推荐
- 【Java线程】锁机制:synchronized、Lock、Condition
- String cannot be resolved to a type
- Java enum的用法详解
- Spring框架自动装配 Bean(三)
- Java的MyBatis框架中实现多表连接查询和查询结果分页
- JAVA多线程实现的三种方式
- Java模拟登录正方教务抓取成绩、课表、空教室
- Spring
- java 判断一个数是否为“开心数”
- Sublime Text3 设置Java开发环境,Javatar
- JAVA通信的三种I/O模型
- JAVA WEB 总结 Servlet篇--源自技术
- SpringMVC的静态资源无法请求到的解决办法
- Spring + Quartz CronExpression静态及动态定时任务
- SSH多个数据源动态数据切换
- Java中的内部类
- Java 环境搭建
- java.util.concurrent.Phaser理解
- java实现简单注册选择所在城市
- java中的多线程包--- Timer的缺陷 用ScheduledExecutorService替代