# Java Map接口
Map接口是基于键(key)和值(value)对的集合。每个键值对被称为一个条目(entry)。Map中的键是唯一的。
如果需要根据键进行搜索、更新或删Java Map接口除元素,那么Map是很有用的。
# Java Map层次结构
在Java中,有两个接口用于实现Map:Map和SortedMap,以及三个类:
HashMap、LinkedHashMap和TreeMap。Java Map的层次结构如下所示:

Map不允许重复的键,但可以有重复的值。HashMap和LinkedHashMap允许使用null键和null值,但TreeMap不允许使用null键或null值。
Map不能直接遍历,因此需要使用keySet()或entrySet()方法将其转换为Set。
| 类名 | 描述 |
|
HashMap |
HashMap是Map的实现,但它不维护任何顺序。 |
|
LinkedHashMap |
LinkedHashMap是Map的实现,它继承自HashMap类,并且按照插入顺序维护元素顺序。 |
|
TreeMap |
TreeMap是Map和SortedMap的实现,它按照升序维护元素顺序。 |
# Java Map示例:非泛型(旧风格)
//非泛型import java.util.*;public class MapExample1 {public static void main(String[] args) {Map map=new HashMap();//向map中添加元素map.put(1,"Amit");map.put(5,"Rahul");map.put(2,"Jai");map.put(6,"Amit");//遍历MapSet set=map.entrySet();//转换为Set以便遍历Iterator itr=set.iterator();while(itr.hasNext()){//转换为Map.Entry以便分别获取键和值Map.Entry entry=(Map.Entry)itr.next();System.out.println(entry.getKey()+" "+entry.getValue());}}}输出:1 Amit2 Jai5 Rahul6 Amit
# Java Map示例:泛型(新风格)
mport java.util.*;class MapExample2 {public static void main(String args[]){Map<Integer,String> map=new HashMap<Integer,String>();map.put(100,"Amit");map.put(101,"Vijay");map.put(102,"Rahul");//元素可以以任何顺序遍历for(Map.Entry m:map.entrySet()){System.out.println(m.getKey()+" "+m.getValue());}}}输出:102 Rahul100 Amit101 Vijay
# Java Map示例:按键比较(comparingByKey)
import java.util.*;class MapExample3 {public static void main(String args[]){Map<Integer,String> map=new HashMap<Integer,String>();map.put(100,"Amit");map.put(101,"Vijay");map.put(102,"Rahul");//返回包含此Map中的映射的Set视图map.entrySet()//返回以此集合为源的顺序流.stream()//根据提供的比较器进行排序.sorted(Map.Entry.comparingByKey())//对流中的每个元素执行操作.forEach(System.out::println);}}输出:100=Amit101=Vijay102=Rahul
# Java Map示例:按键比较(降序)
import java.util.*;class MapExample4 {public static void main(String args[]){Map<Integer,String> map=new HashMap<Integer,String>();map.put(100,"Amit");map.put(101,"Vijay");map.put(102,"Rahul");//返回包含此Map中的映射的Set视图map.entrySet()//返回以此集合为源的顺序流.stream()//根据提供的比较器进行排序.sorted(Map.Entry.comparingByKey(Comparator.reverseOrder()))//对流中的每个元素执行操作.forEach(System.out::println);}}输出:102=Rahul101=Vijay100=Amit
# Java Map示例:按值比较(comparingByValue)
import java.util.*;class MapExample5 {public static void main(String args[]){Map<Integer,String> map=new HashMap<Integer,String>();map.put(100,"Amit");map.put(101,"Vijay");map.put(102,"Rahul");//返回包含此Map中的映射的Set视图map.entrySet()//返回以此集合为源的顺序流.stream()//根据提供的比较器进行排序.sorted(Map.Entry.comparingByValue())//对流中的每个元素执行操作.forEach(System.out::println);}}输出:100=Amit102=Rahul101=Vijay
# Java Map示例:按值比较(降序)
import java.util.*;class MapExample6 {public static void main(String args[]){Map<Integer,String> map=new HashMap<Integer,String>();map.put(100,"Amit");map.put(101,"Vijay");map.put(102,"Rahul");//返回包含此Map中的映射的Set视图map.entrySet()//返回以此集合为源的顺序流.stream()//根据提供的比较器进行排序.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))//对流中的每个元素执行操作.forEach(System.out::println);}}
输出:
101=Vijay102=Rahul100=Amit
本文详细介绍了Java中的Map接口,包括其基本概念、不同实现(如HashMap、LinkedHashMap和TreeMap),以及如何根据键值进行操作,如遍历、排序和比较。提供了示例代码演示各种用法。
9335

被折叠的 条评论
为什么被折叠?



