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
热门文章
- 2月23日 - 最高速度20.1M/S,2025年Nekobox每天更新免费节点订阅地址
- 2月22日 - 最高速度18.3M/S,2025年Nekobox每天更新免费节点订阅地址
- 大人让猫抓破了皮怎么办(大人让猫抓破了皮怎么办图片)
- 中国兽药十大名牌厂家排名百度百科(中国兽药十大名牌排行榜简介)
- 自家宠物猫轻微抓伤有一点渗血(自家猫咪抓了一点点血)
- EditText 不显示光标 光标消失
- 2月19日 - 最高速度19.1M/S,2025年Nekobox每天更新免费节点订阅地址
- Error response from daemon: Get https://registry-1.docker.io/v2/ … read: connection refused
- 宠物寄养协议书范本图片模板(宠物寄养协议书范本图片模板高清)
- 北京有没有领养狗的地方(北京有没有领养狗的地方啊)