Map 四种遍历:
1 Mapmap = 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.Entryentry: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 Mapmap = 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 TreeMapmap2 = 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(Mapmap,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 Listlistmap = 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 }