需求:现有一对象Person有2个属性name和age,把Person对象先按照name属性进行比较排序(字母),如name有相同的按照age的大小排序.
1.构造Person类
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.age = age;
this.name = name;
}
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;
}
}
2.编写java比较器
public class Comparator implements java.util.Comparator {
private int compare(String a, String b) {
return a.compareTo(b);
}
private int compare(int a, int b) {
return (a > b ? (a < b ? 0 : 1) : -1);
}
public int compare(Object o1, Object o2) {
Person p1 = (Person) o1;
Person p2 = (Person) o2;
String name1 = p1.getName();
String name2 = p2.getName();
int age1 = p1.getAge();
int age2 = p2.getAge();
return (compare(name1, name2) == 0 ? compare(age1, age2) : compare(name1, name2));
}
}
3.测试代码
public static void main(String[] args) {
Person p1 = new Person("a", 4);
Person p2 = new Person("b", 2);
Person p3 = new Person("c", 1);
Person p4 = new Person("a", 1);
Person p5 = new Person("a", 6);
Person p6 = new Person("a", -1);
TreeMap tm = new TreeMap(new Comparator());
tm.put(p1, "");
tm.put(p2, "");
tm.put(p3, "");
tm.put(p4, "");
tm.put(p5, "");
tm.put(p6, "");
for (Iterator it = tm.keySet().iterator(); it.hasNext();) {
Person key = (Person) it.next();
System.out.println(key.getName()+" "+key.getAge());
}
}
分享到:
相关推荐
java比较器.md
在项目过程中,常会用到比较器,比较器也确实是个不错的工具,好用,值得去用.一个简单的例子,供大家学习.
java比较器的常见用法.pdf
计算机后端-Java-Java核心基础-第22章 常用类 20. Java比较器概述.avi
java比较器的常见用法[借鉴].pdf
计算机后端-Java-Java核心基础-第23章 枚举类与注解 03. 复习:Java比较器等.avi
490.488.JAVA基础教程_常用类-Java比较器概述(490).rar
主要介绍了Java比较器实现方法,结合具体项目案例形式分析了Java比较器相关排序操作技巧,需要的朋友可以参考下
主要介绍了Java比较器的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
java文本比较器 可比较两Java文件有何异同 1vv
本篇文章是对java比较器Comparable接口与Comaprator接口进行了详细的分析介绍,需要的朋友参考下
主要介绍了java比较器comparator使用示例,需要的朋友可以参考下
System.err.println("未找到合适的比较器"); return 1; } } public int compare(String o1, String o2) { String s1 = (String) o1; String s2 = (String) o2; int len1 = s1.length(); int len2 = s2....
2020-4-9 java 比较器 2020-4-10 java笔记 枚举类 2020-4-10 java 注解(Annotation) 2020-4-11 Java 集合 2020-4-15 java 泛型 2020-4-18 java IO流 2020-4-19 java 网络编程 2020-4-21 java反射 2020-4-22 java8 ...
Java文件选择器Java文件选择器Java文件选择器Java文件选择器Java文件选择器Java文件选择器Java文件选择器Java文件选择器Java文件选择器Java文件选择器
下面小编就为大家带来一篇浅谈Java中几种常见的比较器的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
自己用Java写的桌面小工具,可以用来做为“大家来找茬”之类小游戏时的辅助工具,详见我的博客
Java上的Interfaz'Comparator' Descripción Projecto que ejemplifica el uso de la interfazgenérica'Comparator',准许持证人tenjet objetos que la Implementen para poder pasar a ser'Comparadores'。 可以...
关于java集合比较器的创建和使用 概述: 在java集合中,TreeSet集合和TreeMap集合底层数据结构都是自平衡二叉树,所以在这两个集合中添加元素的时候会实现自动排序,排序方式为中序排序(即左根右的方式进行排序,...
一个详细讲解JAVA_比较器的例子 希望可以帮助到你。