1:key值是基本数据类型
在声明treeMap时创建匿名内部类(Comparator)并实现比较器方法(compare())。
package Conllection;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
/**
* TreeMap排序
*
* @author zhaoy
*
*/
public class Treemap1 {
public static void main(String[] args) {
Map<Integer, String> map = new TreeMap<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if (o1 < o2) {
return 1;
} else if (o1 > o2) {
return -1;
} else {
return 0;
}
}
});
map.put(22, "二十二");
map.put(11, "十一");
map.put(66, "六十六");
map.put(33, "三十三");
System.out.println(map);
}
}
2:key值为引用类型
类实现Comparable接口,重写compareTo()方法。
package Conllection;
/**
* User类
*
* @author zhaoy
*
*/
public class User implements Comparable<User> {
int id;
String name;
int age;
public User(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
@Override
public int compareTo(User o) {
if (id < o.id) {
return 1;
} else if (id > o.id) {
return -1;
} else {
return 0;
}
}
@Override
public String toString() {
return id + "--" + name + "--" + "age";
}
}
package Conllection;
import java.util.Map;
/**
* TreeMap排序
*
* @author zhaoy
*
*/
public class TreeMap {
public static void main(String[] args) {
Map<User, String> map = new java.util.TreeMap<>();
User user1 = new User(1, "zhao", 12);
User user2 = new User(30, "zhang", 3);
User user3 = new User(13, "liu", 54);
User user4 = new User(12, "li", 23);
map.put(user1, "赵");
map.put(user2, "张");
map.put(user3, "刘");
map.put(user4, "李");
for (User user : map.keySet()) {
System.out.println(user);
}
}
}