Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。
-
TreeMap:基于红黑树实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的
Comparator
进行排序。 -
HashMap 的值是没有顺序的,它是按照
key
的HashCode
来实现的,对于这个无序的HashMap
的排序参照TreeMap
的value
排序。 -
LinkedHashMap 是
HashMap
的一个子类,它的输出顺序与输入顺序相同。 -
Map.Entry 返回
Collections
视图。
Map的遍历
-
方法一:键找值,通过元素的键,获取对应的值。
// 创建一个HashMap HashMap<String, Integer> hashMap=newHashMap<>(); hashMap.put("lihaogn",8); hashMap.put("zhangsan",7); hashMap.put("wanger",9);// 遍历map方式一 Set<String> keySet= hashMap.keySet(); Iterator<String> iterator= keySet.iterator();while(iterator.hasNext()){ String key= iterator.next(); Integer value= hashMap.get(key); System.out.println(key+":"+ value);}// lihaogn:8// zhangsan:7// wanger:9
-
方式二:键值对方式,通过集合中每个键值对对象,获取键值对对象中的键与值。
// 遍历map方式二for(Map.Entry<String, Integer> entry: hashMap.entrySet()){ String key= entry.getKey(); Integer value= entry.getValue(); System.out.println(key+":"+ value);}// lihaogn:8// zhangsan:7// wanger:9
Map的排序
-
对
Map
的key
进行排序1
key
升序// 创建一个TreeMap,它的Key默认升序 TreeMap<String, Integer> treeMap=newTreeMap<>(); treeMap.put("lihaogn",5); treeMap.put("zhangsan",3); treeMap.put("wanger",6);for(Map.Entry<String, Integer> entry: treeMap.entrySet()){ String key= entry.getKey(); Integer value= entry.getValue(); System.out.println(key+":"+ value);}// lihaogn:5// wanger:6// zhangsan:3
2
key
降序// key降序,创建TreeMap时给一个比较器参数 TreeMap<String, Integer> treeMap1=newTreeMap<>(newComparator<String>(){@Overridepublicintcompare(String o1, String o2){return o2.compareTo(o1);}}); treeMap1.put("lihaogn",5); treeMap1.put("zhangsan",3); treeMap1.put("wanger",6);for(Map.Entry<String, Integer> entry: treeMap1.entrySet()){ String key= entry.getKey(); Integer value= entry.getValue(); System.out.println(key+":"+ value);}// zhangsan:3// wanger:6// lihaogn:5
-
对
Map
的value
进行排序1
value
升序// 对TreeMap的value排序,升序// 将Map的entry放入List中,然后排序 ArrayList<Map.Entry<String, Integer>> list=newArrayList<>(treeMap.entrySet()); Collections.sort(list,newComparator<Map.Entry<String, Integer>>(){@Overridepublicintcompare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2){return o1.getValue().compareTo(o2.getValue());}});for(Map.Entry<String, Integer> entry: list){ System.out.println(entry.getKey()+":"+ entry.getValue());}// zhangsan:3// lihaogn:5// wanger:6
2
value
降序// 对TreeMap的value排序,降序 ArrayList<Map.Entry<String, Integer>> list1=newArrayList<>(treeMap.entrySet()); Collections.sort(list1,newComparator<Map.Entry<String, Integer>>(){@Overridepublicintcompare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2){return o2.getValue().compareTo(o1.getValue());}});for(Map.Entry<String, Integer> entry: list1){ System.out.println(entry.getKey()+":"+ entry.getValue());}// wanger:6// lihaogn:5// zhangsan:3
声明:本站所有文章,如无特殊说明或标注,均为网络收集发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。