博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java map遍历、排序,根据value获取key
阅读量:4840 次
发布时间:2019-06-11

本文共 3860 字,大约阅读时间需要 12 分钟。

Map 四种遍历:

1 Map
map = new HashMap
(); 2 map.put("one","java"); 3 map.put("two","cn"); 4 map.put("three","love");

 

第一种:取值遍历

1 for(String key:map.keySet()){  2     System.out.println("key="+key+"and value=" +map.get(key));  3 }

 

第二种:Iterator遍历

1 Iterator
> it = map.entrySet().iterator(); 2 while(it.hasNext()){ 3 Map.Entry
entry=it.next(); 4 System.out.println("key=" +entry.getKey() +" and value="+entry.getValue()); 5 }

 

第三种:遍历所有的Value值

1 for(String v:map.values()){  2       System.out.println("value= "+ v);  3 }

该方式取得不了key值,直接遍历map中存放的value值。

 

第四种:使用entrySet遍历

1 for(Map.Entry
entry:map.entrySet()){ 2 System.out.println("key=" +entry.getKey() +" and value="+entry.getValue()); 3 }

 

map排序:

按 key 排序:

1 public class MapSortDemo { 2  3     public static void main(String[] args) { 4  5         Map
map = new TreeMap
(); 6 7 map.put("KFC", "kfc"); 8 map.put("WNBA", "wnba"); 9 map.put("NBA", "nba");10 map.put("CBA", "cba");11 12 Map
resultMap = sortMapByKey(map); //按Key进行排序13 14 for (Map.Entry
entry : resultMap.entrySet()) {15 System.out.println(entry.getKey() + " " + entry.getValue());16 }17 }18 19 /**20 * 使用 Map按key进行排序21 * @param map22 * @return23 */24 public static Map
sortMapByKey(Map
map) {25 if (map == null || map.isEmpty()) {26 return null;27 }28 29 Map
sortMap = new TreeMap
(30 new MapKeyComparator());31 32 sortMap.putAll(map);33 34 return sortMap;35 }36 }37 38 39 比较器类40 41 class MapKeyComparator implements Comparator
{42 43 @Override44 public int compare(String str1, String str2) {45 46 return str1.compareTo(str2);47 }48 }

 

按 value 排序:

1        //如果在Treemap里面想按照value进行排序,我们必须借助工具类Collections.sort(List,Comparator); 2         TreeMap
map2 = new TreeMap
(); 3 map2.put("a","a"); 4 map2.put("b","cccccc"); 5 map2.put("c","bbbbb"); 6 map2.put("d","eeee"); 7 map2.put("e","dd"); 8 ArrayList
> list = new ArrayList
>(map2.entrySet()); 9 Collections.sort(list,new Comparator
>() {10 11 @Override12 public int compare(Entry
o1, Entry
o2) {13 //变成按照value排列14 // return o2.getValue().toString().compareTo(o1.getValue().toString());15 //按照value的长度排序16 Integer o11 = o1.getValue().toString().length();17 Integer o22 = o2.getValue().toString().length();18 return o22.compareTo(o11);19 }20 21 });22 23 for(Map.Entry
l :list){24 System.out.println(l.getKey()+":"+l.getValue());25 }

 

在 map 中根据 value 获取 key:

1     //根据map的value获取map的key   2     private static String getKey(Map
map,String value){ 3 String key=""; 4 for (Map.Entry
entry : map.entrySet()) { 5 if(value.equals(entry.getValue())){ 6 key=entry.getKey(); 7 } 8 } 9 return key; 10 }

 

若要取 map 中 value 的最大值 或 与之对应的 key(整型或浮点型):可利用list

1         //利用list取最大值 2         List
listmap = new ArrayList
(); 3 for(String key:mapp.keySet()){ 4 listmap.add(mapp.get(key)); 5 } 6 //取到最大值的value 7 double valueMax = Collections.max(listmap); 8 //根据map的value获取map的key 9 String emotionMax = ""; 10 for (Map.Entry
entry : mapp.entrySet()) { 11 if(valueMax == entry.getValue()){ 12 emotionMax = entry.getKey(); //取到最大值的 value 对应的 key13 }14 }

 

转载于:https://www.cnblogs.com/ainyi/p/8585244.html

你可能感兴趣的文章
算法笔记_017:递归执行顺序的探讨(Java)
查看>>
牛顿法与拟牛顿法学习笔记(四)BFGS 算法
查看>>
ninth week (1)
查看>>
C float与char数组 互转
查看>>
异步线程中开启定时器
查看>>
正则表达式与unicode
查看>>
abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)
查看>>
div水平居中与垂直居中的方法【摘自美浩工作室官方博客 】
查看>>
UITableView 滚动条
查看>>
Android已有的原生Camera框架中加入自己的API的实现方案。
查看>>
Learn python the ninth day
查看>>
Debian+Django+uWsgi+nginx+mysql+celery
查看>>
docker 基本操作
查看>>
无缝滚动的float属性
查看>>
价值观作业
查看>>
char , unsigned char 和 signed char 区别
查看>>
挂起布局逻辑与恢复布局逻辑
查看>>
back to back
查看>>
Linux/Unix笔记本
查看>>
博弈问题之SG函数博弈小结
查看>>