TreeMap 的两种排序
自然排序
pojo需要实现Comparable接口,调用compareTo方法进行比较
如:数组的.sort() 以及collections.sort()方法都是自然排序,调用集合元素的compareTo方法来比较元素的大小关系,然后将集合元素按照升序排列(从小到大)
自定义排序
实现compartor接口,重写Comparator方法即可
private static TreeMap<String, String> treeMap = null;
public static <T> void main(String[] args) {
// 自然排序,pojo需要实现Comparable接口,调用compareTo方法进行比较
//数组的.sort() 以及collections.sort()方法都是自然排序
//调用集合元素的compareTo方法来比较元素的大小关系,然后将集合元素按照升序排列(从小到大)
defaultTest();
//自定义排序,实现compartor接口
initByComparator();
}
public static void initByComparator() {
System.out.println("------------------- comparetor 自定义排序 --------------------------");
treeMap = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
initTreeMap();
treeMap.forEach((k, v) -> {
System.out.println("k = " + k + " v = " + v);
});
}
// initTreeMap
public static TreeMap<String, String> initTreeMap() {
treeMap = new TreeMap<String, String>();
treeMap.put("sjh1", "1");
treeMap.put("sj3", "2");
treeMap.put("sjhs2123", "2");
treeMap.put("sjs213", "3");
treeMap.put("6", "4");
treeMap.put("sjhd", "5");
treeMap.put("世界级", "6");
treeMap.put("是的", "7");
return treeMap;
}
public static void defaultTest() {
System.out.println("------------------------ 默认自然排序 ----------------------");
initTreeMap();
treeMap.forEach((k, v) -> {
System.out.println("k = " + k + " v = " + v);
});
}
}
结果