【发布时间】:2016-06-21 04:11:58
【问题描述】:
我有一个Hashmap<String,Integer>,密钥是一个唯一的字符串,格式如下:
"abc1.0","bcd1.1","xyz2.1.1","cdef1.2.1"...
现在我需要使用该键对这个哈希图进行排序,但按数字顺序排序,小数点按以下顺序排列:
"abc1.0","bcd1.1","cdef1.2.1","xyz2.1.1",...
我正在尝试使用 A 树图的比较器,但没有正确排序。
例如:
Map<String, Integer> mp = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String key1, String key2) {
.....
//Counted decimal points and if > 2
k1 = Integer.parseInt(key1.substring(1).split("\\.")[countOfDecimals]);
//same for key2
......
}
return Double.compare(k1, k2);
}
编辑:
- 小数点为 '4' 时的最大个数
- 应按数值排序,文字请忽略
几乎尝试了所有给出的例子是 STO 但没有成功:( 如果涉及两个或多个小数点,则不排序。请帮忙!!
【问题讨论】:
-
如果有多个,我认为它们不是小数点...
-
您的示例令人困惑,因为不清楚您是按字母顺序排序还是仅按数字后缀排序。
-
“小数”的数量或它们之间的值是否有限制?
-
为什么你使用
Map<String, Integer>而这些stings 显然不是整数(例如1.2.3.4不是整数,它是一个由四个整数组成的字符串)。映射存储唯一键,并忽略重复项,因此您不能将相同的键映射 - 例如xyz2.1.1.4到许多整数 (2,1,1,4)。你能解释一下吗,因为我不清楚你想用这个 MAP 实现什么?为什么不使用简单的 List 或 Array 并对其进行排序?
标签: java sorting hashmap comparator