java – 使用TreeMap排序问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用TreeMap排序问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1994字,纯文字阅读大概需要3分钟。
内容图文
![java – 使用TreeMap排序问题](/upload/InfoBanner/zyjiaocheng/747/0d61b0179d5d43efae7f3e5165aa2d99.jpg)
我正在尝试在HashMap中放置一些键值,然后尝试使用TreeMap进行排序,如下所示.问题是如果地图中有类似的值,那么在排序后它会考虑其中任何一个.
import java.util.*;
public class HashmapExample {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
ValueComparator bvc = new ValueComparator(map);
TreeMap<String,Integer> sorted_map = new TreeMap(bvc);
map.put("A",99);
map.put("B",67);
map.put("C",123);
map.put("G",67);
map.put("F",67);
map.put("H",67);
map.put("D",6);
System.out.println("unsorted map");
for (String key : map.keySet()) {
System.out.println("key/value: " + key + "/"+map.get(key));
}
sorted_map.putAll(map);
System.out.println("results after sorting");
for (String key : sorted_map.keySet()) {
System.out.println("key/value: " + key + "/"+sorted_map.get(key));
}
}
}
class ValueComparator implements Comparator {
Map base;
public ValueComparator(Map base) {
this.base = base;
}
public int compare(Object a,Object b) {
if((Integer)base.get(a) > (Integer)base.get(b)) {
return 1;
} else if((Integer)base.get(a) == (Integer)base.get(b)) {
return 0;
} else {
return -1;
}
}
}
在此之后输出如下
unsorted map
key/value: D/6
key/value: A/99
key/value: F/67
key/value: H/67
key/value: C/123
key/value: B/67
key/value: G/67
results after sorting
key/value: D/6
key/value: F/67
key/value: A/99
key/value: C/123
对于B,G,F和H键,我给出值为67.在排序映射之后,它仅显示F值并且消除B,G和H值.我想显示下面的输出
key/value: D/6
key/value: B/67
key/value: G/67
key/value: F/67
key/value: H/67
key/value: A/99
key/value: C/123
解决方法:
键B,G和H被消除的原因是因为您提供的比较器仅基于值进行比较.由于它们都具有相同的值,因此它们都是相等的键,这意味着将覆盖其他键.
要打印出你想要的东西,比较器需要首先比较这些值,然后如果它们相等,则比较这些键.
int compare(Comparable key1, Comparable key2) {
// I'm guessing you are doing something like:
// return map.get(key1).compareTo(map.get(key2));
// you can change it to something like
int result = key1.compareTo(key2);
if ( result == 0 ) {
result= key1.compareTo(key2)
}
return result;
}
内容总结
以上是互联网集市为您收集整理的java – 使用TreeMap排序问题全部内容,希望文章能够帮你解决java – 使用TreeMap排序问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。