Map、遍历Map集合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013317445/article/details/82219206

MapInterface Map<K,V>

Map是一个顶层接口。
将键映射到值的对象。
一个映射不能包含重复的键。键唯一。
每个键最多只能映射到一个值。

Map和Collection的区别

Map集合的数据结构针对键有效,跟值无关。
Collection集合的数据结构针对元素有效。

Map集合的功能

  • 1:添加功能
    V put(K key,V value):添加元素。
    如果键是第一次存储,就直接存储元素,返回null
    如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
    void putAll(Map<? extends K,? extends V> m):添加Map集合。
  • 2:删除功能
    void clear():移除所有的键值对元素
    V remove(Object key):如果存在,则根据键删除键值对元素,并把值返回。不存在则返回null
  • 3:判断功能
    boolean containsKey(Object key):判断集合是否包含指定的键
    boolean containsValue(Object value):判断集合是否包含指定的值
    boolean isEmpty():判断集合是否为空
  • 4:获取功能
    Set<Map.Entry<K,V>> entrySet():返回键值对对象的集合
    这里Map.Entry类型提供了两个方法:K getKey()获取key;V getValue()获取value。
    V get(Object key):根据某个键获取值
    Set<K> keySet():获取集合中所有键的集合。返回的是Set类型
    Collection<V> values():获取集合中所有值的集合。返回的是Collection类型
  • 5:长度功能
    int size():返回集合中的键值对的对数
import java.util.Map;
import java.util.HashMap;
import java.util.Collection;
import java.util.Set;

public class MapDemo {
    public static void main(String[] args){
        Map<String, String> map= new HashMap<String, String>();//Map是接口,不能实例化。这里用它的实现类HashMap实例化。

        //put添加元素
        System.out.println(map.put("001","chen"));//null
        System.out.println(map.put("006","lin"));//null
        System.out.println(map.put("006","kk"));//lin
        map.put("002","feng");
        map.put("002","dong");

        System.out.println(map);//{001=chen, 002=dong, 006=kk}

        //clear清除所有元素
        map.clear();
        System.out.println(map);//{}

        map.put("杨绛","钱钟书");
        map.put("林徽因","徐志摩");
        map.put("陈红","陈凯歌");
        map.put("袁咏仪","张智霖");
        map.put("孙俪","邓超");

        //remove删除“孙俪”键的键值对
        System.out.println(map.remove("孙丽"));//null
        System.out.println(map.remove("孙俪"));//邓超  注意删除键孙俪,返回的是它对应的值

        //是否含有某个键
        System.out.println(map.containsKey("杨绛"));//true
        //是否含有某个值
        System.out.println(map.containsValue("钱钟书"));//true
        //是否为空
        System.out.println(map.isEmpty());//flase

        //获取大小
        System.out.println(map.size());//4
        //根据键获取值
        System.out.println(map.get("袁咏仪"));//张智霖

        //获取所有键值对的集合
        Set<Map.Entry<String,String>> kvs= map.entrySet();
        System.out.println(kvs);//[袁咏仪=张智霖, 陈红=陈凯歌, 林徽因=徐志摩, 杨绛=钱钟书]
        //获取集合中所有的键的集合
        Set<String> keys=map.keySet();
        System.out.println(keys);//[袁咏仪, 陈红, 林徽因, 杨绛]
        //获取集合中所有的键的集合
        Collection<String> values=map.values();
        System.out.println(values);//[张智霖, 陈凯歌, 徐志摩, 钱钟书]

    }
}

Map集合的遍历

两种方式。
遍历方式1:根据键找值

import java.util.Map;
import java.util.HashMap;
import java.util.Set;

public class TraverseMap {
    public static void main(String[] args){
        //创建map集合
        Map<String, String> map= new HashMap<String, String>();

        //给集合中添加元素
        map.put("杨绛","钱钟书");
        map.put("林徽因","徐志摩");
        map.put("陈红","陈凯歌");
        map.put("袁咏仪","张智霖");
        map.put("孙俪","邓超");

        System.out.println("--------------遍历方式1---------------");
        //先获取所有键 的集合
        Set<String> keys=map.keySet();
        //遍历键的集合
        for(String key: keys){
            //根据每个key获取每个value
            String value= map.get(key);//注意这里是map.get(key) map为所在集合,key为集合中的某个键
            System.out.println(key+"---"+value);
        }
}

遍历方式2:根据键值对找键和值


        System.out.println("--------------遍历方式2---------------");
        //先获取所有键值对对象的集合
        Set<Map.Entry<String, String>> kvs= map.entrySet();
        //遍历键值对的集合,获取每个键值对元素
        for(Map.Entry<String, String> kv : kvs){
            //获取每个键值对的key
            String key= kv.getKey();
            //获取每个键值对的value
            String value= kv.getValue();
            System.out.println(key+"----"+value);
        }
    }

猜你喜欢

转载自blog.csdn.net/u013317445/article/details/82219206