实现思路:将Map key,value模式转换为List key=value模式,然后利用冒泡排序进行排序
Map<Long, Double> historyBuy = new HashMap<Long, Double>();
// 获得map集合
List<Map.Entry<Long, Double>> list = new ArrayList<Map.Entry<Long, Double>>(historyBuy.size());
list.addAll(historyBuy.entrySet());
int j = list.size();
// 冒泡排序
for(int i = 0; i < j - 1; i++) {
for(int k = 0; k < j - i - 1; k++) {
Entry<Long, Double> e1 = list.get(k);
Entry<Long, Double> e2 = list.get(k + 1);
double d1 = e1.getValue();
double d2 = e2.getValue();
if(d1 < d2) { // 升序此处为> 降序此处为<
Collections.swap(list, k, k + 1); // 交换集合中下标为i 和 k 的数据
}
}
}
使用的Entry为:import java.util.Map.Entry;
实际效果:
排序前:[38291=4.0, 38290=1.0, 38289=3.0, 38832=1.0, 38294=507.0, 38293=26.0, 38292=32.0, 38829=1.0, 38830=6.0, 38831=6.0, 38824=2.0, 38287=16.0, 38825=10.0, 38826=9.0]
排序后:[38294=507.0, 38292=32.0, 38293=26.0, 38287=16.0, 38825=10.0, 38826=9.0, 38830=6.0, 38831=6.0, 38291=4.0, 38289=3.0, 38824=2.0, 38290=1.0, 38832=1.0, 38829=1.0]
等号左边为原来Map的key,等号右边为原来Map的value,排序方式为降序排序