关于Map
map的分类及特点:
HashMap:最常用最基本的Map,根据key和value的形式来存储数据,key是唯一的,根据key可以直接获取它的value,具有很快的访问速度。非同步的。
TreeMap: 与 HashMap类似,区别是能够把它保存的记录根据key排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。key的值不能为null。非同步的。
Hashtable: 与 HashMap类似,区别是:key和value的值均不能为null,支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。
LinkedHashMap: 与 HashMap类似,区别是保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。非同步的。
map的排序:
<String,Double>类型的HashMap根据Value数值由大到小或小到大进行排序:
List<Map.Entry<String, Double>> mapEntry = new ArrayList<Map.Entry<String, Double>>(topDpmo.entrySet());//根据value的值对map进行排序
Collections.sort(mapEntry, new Comparator<Map.Entry<String, Double>>() {
public int compare(Map.Entry<String, Double> o1,Map.Entry<String, Double> o2) {
double result = o2.getValue() - o1.getValue();//二者的顺序取决于需要把大值居前还是小值居前
if(result > 0){
return 1;
}else if(result == 0){
return 0;
}else{
return -1;
}
}
});