Map中根据value排序---输出value最大时所对应的Key
来源:互联网 发布:红外线透视相机软件 编辑:程序博客网 时间:2024/05/15 06:16
一 相关知识
Map內涵资料是Key -> Value的架构集合体,而Key是属于Set的架构集合体,也就是说Key的值是唯一的,而Value的值可以重复。
一般常用的子类是HashMap或TreeMap,
如果考虑效能的话,建议使用HashMap,
如果希望Key值有顺序性,就使用TreeMap吧!
二 根据Value的大小进行排序。(EntrySet+Comparator)
Map<String , Integer> mapInteger = new HashMap<String , Integer>();
mapInteger.put("A", 98);
mapInteger.put("B", 50);
mapInteger.put("C", 76);
mapInteger.put("D", 23);
mapInteger.put("E", 85);
map中对整数value值排序操作如下:
public static void mapSortInteger(Map<String , Integer> map){
List<Map.Entry<String, Integer>> listData = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
System.out.println("排序前listData:");
System.out.println(listData);
//排序----// //当value值为整型时, compare()方法
Collections.sort(listData, new Comparator<Map.Entry<String, Integer>>(){
public int compare(Map.Entry<String,Integer > o1, Map.Entry<String, Integer> o2){
return (o2.getValue() - o1.getValue());
}
}
);
// //当value值为双精度浮点类型时, compare()方法
Collections.sort(listData, new Comparator<Map.Entry<String, Double>>(){
public int compare(Map.Entry<String,Double > o1, Map.Entry<String, Double> o2){
return (int)((o2.getValue() - o1.getValue()) * 1000);
}System.out.println("排序后listData:");
System.out.println(listData);
}
输出结果为:
========整型数据操作========
排序前listData:
[D=23, E=85, A=98, B=50, C=76]
排序后listData:
[A=98, E=85, C=76, B=50, D=23]
三 取得Value最大时对应的Key值的俩种方法
1 通过EntrySet<K,V>,将value放到一个List中,利用集合方法类Collections的sort方法,进行排序.(默认自然升序),然后找出等于最大value的所有key.
public static void main(String[] args){
Map map=new HashMap();
map.put("d", 761);
map.put("g", 7);
map.put("a", 761);
map.put("c", 34);
int value=0;
String maxKey = null;
List list=new ArrayList();
Iterator ite=map.entrySet().iterator();
while(ite.hasNext()){
// EntrySet 将同一个元素的key与value 关联在一起,当当前元素的value等于按从小到大排序的最后(最大)的元素的value值
//,输出当前/元素的键key与值value
Map.Entry entry =(Map.Entry)ite.next();
value = Integer.parseInt(entry.getValue().toString());
list.add(entry.getValue());
Collections.sort(list);
if(value == Integer.parseInt(list.get(list.size()-1).toString())){
maxKey = entry.getKey().toString();
System.out.println(maxKey+"/"+value);
}
}
}
}
// 答案:
// d/761
// a/761
2 先取的value的最大值,然后找出等于最大value的所有key。
public static void main(String[] args) {
Map map=new HashMap();
map.put("d", 761);
map.put("g", 7);
map.put("a", 761);
map.put("c", 34);
Set set=map.keySet();
Iterator it=set.iterator();
int max=0;
while(it.hasNext()){
String key=(String)it.next();
int init=(Integer)map.get(key);
if(max<(Integer)map.get(key)){
max=(Integer)map.get(key);
}
}
List<String> list=test(map,max);
for(String s:list){
System.out.print(s+"/");
System.out.println(max);
}
}
private static List test(Map map, Object o) {
List list=new ArrayList();
Set set=map.keySet();
Iterator it=set.iterator();
while(it.hasNext()){
String key=(String)it.next();
if(o.equals(map.get(key))){
list.add(key);
}
}
return list;
}
}
// 答案:
// d/761
// a/761
- Map中根据value排序---输出value最大时所对应的Key
- 根据value取得map中对应的key(笔记)
- 根据value取得map中对应的key
- c++容器map中根据key求得对应value值
- java Map的问题取得最大value对应的key
- 从map中取出最大或最小value值对应的key值
- 修改Map中确定key对应的value问题
- 返回map中最大值value及其对应的key
- 根据Map的value排序
- 在map中根据value获取key
- 根据map的value值排序并输出
- Map根据value排序
- Map 根据value 排序
- 找出一个数组中重复次数最多的字符暨找出Map中的最大Value及其对应的Key
- Map 根据value 获取key
- java根据map指定的value值获取对应的key值使用Gson实现
- (java)根据map中value进行排序
- Map中根据value值的大小进行排序
- java 线程语法补充
- iOS NSString截取字符串
- Servlet过滤器详解
- php 读写文件
- SQL 2005 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错)
- Map中根据value排序---输出value最大时所对应的Key
- Java代码实例 判断这个数是否是素数
- java中final的意义
- How to configure Oracle listener.ora file
- 计算listview的高度
- 【苹果经验】Wifi密码修改了,如何修改MacBook pro(air)已经记住的密码?
- Android之Broadcast, BroadcastReceiver(广播)
- Arcgis Server .NET ADF 异步刷新方法(非ADF控件)
- 将PHP中的Session保存到数据库中