package Tips;
/**
* 保证TreeMap的键有序有两种方法:
* 自然排序:该键的类实现Comparable即重写compareTo方法,创建TreeMap不用特殊处理
* 定制排序:实现Comparator接口即重写compare方法,创建TreeMap时传入该实现类
*/
import java.util.Comparator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
class Person implements Comparable<Person> {
public String name;
public int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
@Override
public int compareTo(Person person) {
return this.name.compareTo(person.name);
}
}
class AscAgeComparator2 implements Comparator<Person> {
public int compare(Person p1, Person p2) {
return p1.age - p2.age;
}
}
public class TreeMapSort {
public static void main(String[] args) {
Person p1 = new Person("Zera", 23);
Person p2 = new Person("Jerry", 19);
Person p3 = new Person("Tonny", 30);
System.out.println("TreeMap自然排序:");
Map<Person, Integer> map1 = new TreeMap<>();
map1.put(p1, 5);
map1.put(p2, 6);
map1.put(p3, 7);
System.out.println(map1);
System.out.println("TreeMap定制排序:");
Map<Person, Integer> map2 = new TreeMap<>(new AscAgeComparator2());
map2.put(p1, 5);
map2.put(p2, 6);
map2.put(p3, 7);
System.out.println(map2);
System.out.println("TreeSet自然排序:");
Set<Person> set1 = new TreeSet<>();
set1.add(p1);
set1.add(p2);
set1.add(p3);
System.out.println(set1);
System.out.println("TreeSet定制排序:");
Set<Person> set2 = new TreeSet<>(new AscAgeComparator2());
set2.add(p1);
set2.add(p2);
set2.add(p3);
System.out.println(set2);
}
}
TreeMap和TreeSet对象排序
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 冒泡排序 * 原理:比较两个相邻的元素,将值大的元素交换至右端。 * 思路:依次比较相邻的两个数,将小数放在前面(...
- 本文将会介绍Mybatis的事务管理机制的原理,首先介绍下事务管理的特质、在Mybatis中是如何创建事务、事务有...