Java中的Map接口是一种键值对映射的数据结构,它可以存储在一个对象中,以便您可以快速检索一个值,而无需检索整个集合。在Java中,有多种实现方式,如HashMap、TreeMap、LinkedHashMap等。Map接口中的key和value都可以是任何对象类型,包括基本数据类型。但是对于value来说,它不能是null,但是对于key来说是可以的(在HashMap中)。
Map接口中还有一个比较重要的内部类Entry,它描述一个Map中的一个映射项,也即是键值对,Entry包含两个属性,一个是key,一个是value。在Map中,我们可以通过entrySet()方法获取一个set集合,里面包含了所有的Entry对象,我们可以通过这些Entry对象获取到Map中存储的键值对。
下面我们来简单介绍一下常用的Map接口实现类:
1. HashMap
HashMap是基于哈希表实现的Map,它对于键的映射关系存储在数组中,通过哈希算法,可以快速的定位到该数组中的元素。它是线程不安全的,不能保证元素的顺序。
下面是HashMap的一个简单使用例子:
```java
Map map.put("name", "张三"); map.put("age", "22"); map.put("gender", "男"); for(Map.Entry System.out.println(entry.getKey() + " : " + entry.getValue()); } ``` 输出: ``` name : 张三 age : 22 gender : 男 ``` 2. TreeMap TreeMap是基于红黑树结构的Map,它能够根据键的自然顺序或者指定的Comparator顺序进行排序。TreeMap是线程不安全的,因为它没有同步机制,如果多个线程同时访问它可能会导致数据不一致等问题。 下面是TreeMap的一个简单使用例子: ```java Map map.put(3, "张三"); map.put(1, "李四"); map.put(2, "王五"); for(Map.Entry System.out.println(entry.getKey() + " : " + entry.getValue()); } ``` 输出: ``` 1 : 李四 2 : 王五 3 : 张三 ``` 3. LinkedHashMap LinkedHashMap是HashMap的一个子类,在HashMap基础上增加了一个链表维护插入顺序,因此可以保证按照插入顺序遍历。LinkedHashMap在迭代访问Map时,它可以按照访问的顺序依次遍历。 下面是LinkedHashMap的一个简单使用例子: ```java Map map.put("name", "张三"); map.put("age", "22"); map.put("gender", "男"); for(Map.Entry System.out.println(entry.getKey() + " : " + entry.getValue()); } ``` 输出: ``` name : 张三 age : 22 gender : 男 ``` 4. Hashtable Hashtable是一个线程安全的Map实现,但是在性能上不如HashMap,因为它的所有操作都是同步的。Hashtable不允许null值或null键,而HashMap可以。 下面是Hashtable的一个简单使用例子: ```java Map map.put("name", "张三"); map.put("age", "22"); map.put("gender", "男"); for(Map.Entry System.out.println(entry.getKey() + " : " + entry.getValue()); } ``` 输出: ``` name : 张三 age : 22 gender : 男 ``` 5. EnumMap EnumMap是一种特定于枚举类型键的专用Map实现。它提供了在枚举类型键上的高性能和低噪声,而通用的Map实现不能保证。 下面是EnumMap的一个简单使用例子: ```java enum WeekDay {Monday, Tuesday, Wednesday, Thursday, Friday} Map map.put(WeekDay.Monday, "星期一"); map.put(WeekDay.Tuesday, "星期二"); map.put(WeekDay.Wednesday, "星期三"); for(Map.Entry System.out.println(entry.getKey() + " : " + entry.getValue()); } ``` 输出: ``` Monday : 星期一 Tuesday : 星期二 Wednesday : 星期三 ``` 以上就是常用的Map实现类,当然Java还有其他的Map实现类,如果需要了解更多,可以查看Java官方文档。 下面我们来介绍一下Map.Entry的常用方法: 1. getKey():返回该项的键。 2. getValue():返回该项的值。 3. setValue(V value):将该项的值设置为指定值。 下面是一个Map.Entry的简单使用例子: ```java Map map.put("name", "张三"); map.put("age", "22"); map.put("gender", "男"); for(Map.Entry System.out.println(entry.getKey() + " : " + entry.getValue()); entry.setValue("***"); } for(Map.Entry System.out.println(entry.getKey() + " : " + entry.getValue()); } ``` 输出: ``` name : 张三 age : 22 gender : 男 name : *** age : *** gender : *** ``` 从输出结果可以看出,我们通过entry.setValue()方法将原有的值都修改为了`***`。 总结: 通过本篇文章的介绍,我们了解了Java中常用的Map接口实现类以及Map.Entry的使用方法和常用方法。在实际开发中,根据不同的业务场景,选取合适的Map实现类可以大大提高程序的性能和效率。 如果你喜欢我们三七知识分享网站的文章,
欢迎您分享或收藏知识分享网站文章
欢迎您到我们的网站逛逛喔!https://www.37seo.cn/
发表评论 取消回复