总结Map集合

1 什么是Map集合

类似于IP地址与主机名,身份证号与个人等,这种一一对应的关系,就叫做映射。Java中专门用来存储这种有映射关系的元素的集合叫做Map集合

1.1 与Collection的区别

1.Collection集合中元素都是单个的,而Map集合中元素成对出现,且有映射关系(由键可找值)。
2.Collection集合叫单列集合,Map集合叫双列集合
3.Map集合中键不可以重复,而值可以重复
4.Map集合中键和值得类型可以不同

2 Map常用子类

Map接口常用的子类有:
HashMap<K,V>:内部采用哈希表结构,元素存取无序

LinkedHashMap<K,V>:内部采用哈希表+链表的结构,链表保证元素存取的有序
注意事项:存储自定义类型的时候,需重写hashCode方法和equals方法

3 Map集合常用方法

public V put(K key, V value);//把指定的键与指定的值添加到Map集合中。
public V remove(Object key);//把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
public V get(Object key);//根据指定的键,在Map集合中获取对应的值。
boolean containsKey(Object key);//判断集合中是否包含指定的键。
public Set<K> keySet();//获取Map集合中所有的键,存储到Set集合中。
public Set<Map.Entry<K,V>> entrySet(); //获取到Map集合中所有的键值对对象的集合(Set集合)。

注意事项:put方法放入元素时,如果原集合中没有指定的键,则返回的值为null,如果有对应的键,则新的值替换原来的值,返回被替换的值

4 Map集合的遍历

遍历Map集合有两种方式,分别对应Map集合中的两种方法——keySet方法和entrySet方法。

4.1 按键找值的方式

步骤
1.将Map集合中的所有的键放入一个Set集合中。
2.用遍历Set集合的方法,获取每一个键。
3.依次用Map集合中的get方法用键获取值,达到遍历。
代码演示

  //假设这是个有多个元素的HashMap集合map
  Set<String> keys = map.keySet();
        // 遍历键集 得到 每一个键
        for (String key : keys) {
          	//key  就是键
            //获取对应值
            String value = map.get(key);
            System.out.println(key+"->"+value);
        }  

4.2 按键值对的方式

先来了解一下什么叫键值对:
键值对:Map存放得键(K)与值(V)优有着一一对应的关系,这样的一对元素叫键值对。
键值对对象(Entry):Entey将键值对封装成了一个对象,即键值对对象。
Entry也提供了获取键与值的方法:

public K getKey();//获取Entry对象中的键。
public V getValue();//获取Entry对象中的值。

步骤
1.利用Map集合中的entrySet方法将Map集合中的所有键值对放入Set集合中返回。
2.遍历Set集合,获取每一个entry对象。
3.依次用entry的getKey或者getValue方法,达到遍历的目的。
代码演示

//假设map是个有元素的HashMap集合
	Set<Entry<String,String>> entrySet = map.entrySet();

        // 遍历得到每一个entry对象
        for (Entry<String, String> entry : entrySet) {
           	// 解析 
            String key = entry.getKey();
            String value = entry.getValue();  
            System.out.println(key+"->"+value);
        }

5 Map集合存储自定义类型

因为Map集合的键是唯一的,如果有自定义类型是键的话,为了保证键的唯一,则自定义类必须重写hashCode方法和equals方法,来保证自定义类型的唯一。如果想存取有序,则可以使用LinkedHashMap集合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值