Map集合概述

/*
    java.util.Map<K,V>是双列集合的根接口,java.util.Collection<E>是单列结合的根接口,它俩没有关系
    Map接口有两个泛型:
    第一个泛型:键的类型
    第二泛型:值的类型

    二者可以相同,也可以不同
    特点:
        1.键必须唯一
        2.可以根据键获取值
        3.但不能根据值找键
        4.将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

    常用的实现类:
    1.HashMap集合:HashSet集合底层采用的是HashMap,所以HashMap里面也有一个哈希表结构,所以查询速度特别快
        哈希特性:针对的是键(键无序,不可重复)
    2.LinkedHashMap集合:是HashMap的子类,里面也有一个哈希表结构,额外提供了一个双向链表,用来维护顺序(存入和取出的顺序是一致)
        链表的特性和哈希特性:针对的是键(键有序,不可重复)
    3.TreeMap集合:可以实现排序

    Map集合要求键唯一,所以如果采用自定义类型作为键的话,必须覆盖重写equals和hashCode方法


    Map接口中定义了很多方法,常用的如下:

    - public V put(K key, V value):  把指定的键与指定的值添加到Map集合中。
            -如果key不存在,返回的值null
            -如果键存在,返回的是键对应的之前的value值
    - public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
    - public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
    - public Set<K> keySet(): 获取Map集合中所有的键,存储到Set集合中。
    - Collection<V> values() :获取所有的值对应的Collection集合


 */
public class Demo01Map {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();
        String value = map.put("001", "张三");
        System.out.println(map);//{001=张三}
        System.out.println(value);//null
        value = map.put("001","张三三");
        System.out.println(value);//张三
        System.out.println(map);//{001=张三三}
        System.out.println("===========");
        map.put("002", "李四");
        map.put("003", "王五");
        map.put("004", "赵六");
        System.out.println(map);//{001=张三三, 002=李四, 003=王五, 004=赵六}
        String whoRemoved = map.remove("001");
        System.out.println("谁被删除了呢?"+whoRemoved);//张三三
        System.out.println(map);//{002=李四, 003=王五, 004=赵六}
        System.out.println( map.remove(100));//null,如果指定的键不存在,返回null
        System.out.println("============");
        String name = map.get("004");//获取004键对应的值
        System.out.println(name);//赵六
        name = map.get("040");//获取040键对应的值,不存在返回null
        System.out.println(name);//null
        System.out.println("============");
        System.out.println("map集合中有几对元素: "+map.size());
        System.out.println("map集合是否为空: "+map.isEmpty());

        //获取map集合所有的键对应的Set集合
        Set<String> set = map.keySet();
        //遍历
        //迭代器
        Iterator<String> it = set.iterator();
        while (it.hasNext()) {
            String id = it.next();
            System.out.println(id);
        }
        System.out.println("============");
        //使用增强for
        for(String s : set) {
            System.out.println(s);
        }
        for(String s : map.keySet()) {
            System.out.println(s);
        }
        System.out.println("============");
        //获取所有的值对应的集合
        Collection<String> coll = map.values();
        //迭代器...
        //增强for
        for(String s : coll) {
            System.out.println(s);
        }
        System.out.println("============");
        //增强for
        for(String s : map.values()) {
            System.out.println(s);
        }
    }
}

/*
    添加:put
    根据键获取值:V get(Object key)
    根据键删除:V remove(Object key)
    获取所有的键对应的集合:keySet
    获取所有的值对应的集合:values
 */
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值