Java中的映射 Map接口

本文详细介绍了Java中的Map集合,包括其特点、与Collection的区别、常用实现类(如HashMap、LinkedHashMap和TreeMap)及其构造方法。此外,还阐述了Map的主要功能,如添加、获取、删除及判断等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        Collection接口接口操作的时候,每次都会向集合中增加一个元素,但是如果增加的是一对元素,则使用Map接口来实现,Map是专门用来存储键---值对的对象,Map中存在的关键字和值都必须是对象,并要求关键字是唯一,而值可以重复。

        Map集合 ,键值的映射关系的一种集合(接口) * 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

        Map接口的常用实现类有HashMap和LinkedHashMap类、TreeMap类和Hashtable类。前三个类的行为和功能与Set实现类HashSet、LinkedHashSet以及TreeSet类似。

         Map集合和Collection的区别?

 Map集合:是一种键和值的映射关系(双列集合) 当作为:夫妻对
 Collection集合:单列集合,只能存储一种类型的元素       当作为:光棍


间接关系:HashSet依赖于Map接口的子实现类HashMap的

     TreeSet依赖于Map接口的子实现类TreeMap的

Map<K,V> ,在Map集合中,只针对键有效,跟值无关 Map接口的子实现类:HashMap和TreeMap

 Map接口的功能:
             V put(K key,V value) :添加功能:将指定的值和键关联起来

             如果当前的这个键是一次存储,则返回值null

            如果不是第一次存储,返回值是第一次对应的值,当前的值就把之前的键对应的值替换掉!

 
  1)获取功能
   set<Map.Entry<K,V>> entrySet() :和Map集合的遍历有关系(键值对对象)
   Set<K> keySet():获取映射关系中所有的键的集合
   int size()返回此映射中的键-值映射关系数
   2)删除功能
   void clear():删除所有映射关系
             Vremove(Object key)如果存在一个键的映射关系,则将其从此映射中移除
  
           3)判断功能:
   boolean containsKey(Object key)如果此映射包含指定键的映射关系,则返回 true
                 boolean containsValue(Object value):映射关系中是否包含指定的值
   boolean isEmpty():判断映射关系是否为空。

 在Map的操作中,可根据Key找到对应的value,如果找不到,则内容为null,而且由于使用的是HashMap类,所以输出的键值对的顺序和放入的顺序并不保持一致,另外,在HashMap里面的key允许为null。

HashMap类的构造方法包括:

1)HashMap()创建一个空的映射对象,使用缺省的填充因子

2)HashMap(int initial Capacity)用指定的初始容量和缺省的填充因子创建一个映射对象。

3)HashMap(int initial Capacity,float loadFactor)用指定的初始容量与填充因子创建一个映射对象。

4)HashMap(Map t)用指定的映射对象创建一个新的映射对象。

LinkedHashMap是HashMap类的子类,它保持键的顺序和插入的顺序一致,其构造方法与HashMap的构造方法一致。

TreeMap可以使存放按照Key值有序存放,注意:由于需要按照Key值进行排序有序存放,而且Key值本身就是对象,因此对象所在的类必须实现Comparable接口。

TreeMap类的构造方法如下:

1)TreeMap()创建根据键的自然顺序排序的空的映射。

2)TreeMap(Comparaor c)根据给定的比较器创建一个空的映射。

3)TreeMap(Map m)用指定的映射创建一个新的映射,根据键的自然顺序排序。

4)TreeMap(SortedMap m)在指定的SortedMap对象创建新的TreeMap对象。


### Java中的Map接口及其使用 #### Map接口简介 `Map` 是一种双列集合类的根接口,用于存储具有键 (Key) 和值 (Value) 映射关系的元素。每个元素都包含一对键值,在使用 `Map` 集合时可以通过指定的 Key 找到对应的 Value[^4]。 #### 主要实现类 主要实现了 `Map` 接口的类有 `HashMap` 和 `TreeMap` 等。其中 `HashMap` 提供了基本的操作性能优化,而 `TreeMap` 则保持了按键排序的功能。 #### 基本操作方法 ##### 添加元素 可以利用 `put(K key,V value)` 方法向 `Map` 中添加键值对;当需要有条件地添加新键值对时,则可采用 `putIfAbsent(K key,V value)` 方法,这会在键不存在的情况下才执行插入动作[^1]。 ```java import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args){ Map<String, Integer> map = new HashMap<>(); map.put("a", 6); map.put("b", 2); System.out.println(map); //{a=6, b=2} // 如果 "b" 键已存在不会更新其值,对于 "c" 将创建新的条目 map.putIfAbsent("b", 3); map.putIfAbsent("c", 8); System.out.println(map); //{a=6, b=2, c=8} } } ``` ##### 获取所有Entry对象并遍历 为了获取所有的 Entry 对象以便于进一步处理或展示数据,通常会先得到整个 `entrySet()` 的视图再对其进行迭代访问: ```java import java.util.*; class entrySetDemo{ public static void main(String[] args){ Map<String, String> m = new HashMap<>(); m.put("key1","value1"); m.put("key2","value2"); Set<Map.Entry<String,String>> s = m.entrySet(); Iterator<Map.Entry<String,String>> i = s.iterator(); while(i.hasNext()){ Map.Entry<String, String> e = i.next(); String key = e.getKey(); // 返回与此项对应的键。 String value = e.getValue(); // 返回与此项对应的值。 System.out.printf("%s=%s\n", key,value ); } } } ``` 这段代码展示了如何通过 `entrySet()` 来获得一组不可重复且有序(取决于具体实现)的映射表记录,并逐一遍历它们以提取出各自的键和值信息[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值