TreeMap
在需要使用的排序的时候,课使用TreeMap。自定义排序规则,一般有两种方式。
-
自定义Comparator
-
key对象实现Comparable的compareTo方法
问题
有一个需求要根据开课时间排序,我自定义了一个Comparator的TreeMap,把HashMap的使用putAll导入到TreeMap中,代码如下:
Map<Long, List<HomeworkDto>> hashMap = buildMap();
Map<Long, List<HomeworkDto>> treeMap = new TreeMap<>((o1, o2) -> {
Long t1 = getStartTime(o1);
Long t2 = getStartTime(o2);
if (t1 < t2){
return -1;
} else if (t1.equals(t2)){
return 0;
}
return 1;
});
treeMap.putAll(hashMap);
有一次运营反馈一条数据不见了,排查了半天,最后定位到时导入数据到TreeMap这一步导致数据丢失了。我模拟了有问题的数据,打印出来的数据让我不得骑姐。
hashMap========={2000004660741715=[], 2000004660741698=[HomeworkDt