java排序输出序号_Java对map进行排序并生成序号
最近做的項目有這樣一個需求:要求對map中的值進行排序并生成序號。如果值相等則序號不變;如果不相等序號為該數數值在所有元素中的索引。如下表所示:
Key(String)
Value(Float)
Idx
23
12.4
1
10
3.2
2
11
2.2
3
9
2.2
3
1
1.9
5
6
0.5
6
public static Integer getSort(Map hashMap, String string) {
// 轉換
ArrayList> arrayList = new ArrayList>(
hashMap.entrySet());
// 排序
Collections.sort(arrayList, new Comparator>() {
public int compare(Map.Entry map1,
Map.Entry map2) {
return ((map2.getValue() - map1.getValue() == 0) ? 0 : (map2
.getValue()
- map1.getValue() > 0) ? 1 : -1);
}
});
Map idxex = new HashMap();
// 輸出
int size = 1;
for (int i = 0; i < arrayList.size(); i++) {
Entry entry = arrayList.get(i);
if (i > 0) {
float curr = arrayList.get(i).getValue();
float last = arrayList.get(i - 1).getValue();
if (curr != last) {
size = i;
idxex.put(entry.getKey(), (i + 1));
size++;
} else {
idxex.put(entry.getKey(), size);
}
} else {
idxex.put(entry.getKey(), size);
}
}
for (Map.Entry entry : idxex.entrySet()) {
String key = entry.getKey();
if (string.equals(key)) {
return entry.getValue();
}
}
return 0;
}
總結
以上是生活随笔為你收集整理的java排序输出序号_Java对map进行排序并生成序号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几行代码,让黑白老照片重获新生!
- 下一篇: 【金猿技术展】同盾科技知识联邦技术——3