zoukankan      html  css  js  c++  java
  • Javase之集合体系(4)之Map集合

    集合体系之Map集合

    ##Map<K,V>( 接口 )

    特点:将键映射到值对象,一个映射不能包含重复的键:每个键只能映射一个值

    Map集合与Collection集合的区别

    ​ Map集合存储元素成对出现,其键唯一值可重复,为双列集合

    ​ Collection集合存储元素单独出现,其List子类的元素有序,可重复。其Set子类的元素唯一,为单列集合

    注意:

    ​ Map集合的数据结构只与键有关,与值无关

    ​ Collection集合的数据结构针对元素有效

    Map集合功能概述

    添加功能

    • put

    V put(K key,V value):将指定的值与此映射中的指定键关联(可选操作)。如果此映射以前包含一个
    该键的映射关系,则用指定值替换旧值(当且仅当 m.containsKey(k) 返回 true 时,才能说映射 m
    包含键 k 的映射关系)。
    
    • putAll

    void putAll(Map<? extends K,? extends V> m):从指定映射中将所有映射关系复制到此映射中
    (可选操作)。对于指定映射中的每个键 k 到值 v 的映射关系,此调用等效于对此映射调用一次
     put(k, v)。如果正在进行此操作的同时修改了指定的映射,则此操作的行为是不确定的。 
    

    删除功能

    • clear

    void clear():从此映射中移除所有映射关系(可选操作)。此调用返回后,该映射将为空。 
    
    • remove

    V remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
    返回此映射中以前关联该键的值,如果此映射不包含该键的映射关系,则返回 null。 
    

    判断功能

    • containsKey

    boolean containsKey(Object key):如果此映射包含指定键的映射关系,则返回 true
    
    • containsValue

    boolean containsValue(Object value):如果此映射将一个或多个键映射到指定值,则返回 true。
    
    • isEmpty

    boolean isEmpty():如果此映射未包含键-值映射关系,则返回 true。
    

    获取功能

    • entrySet

    Set<Map.Entry<K,V>> entrySet():返回的是键值对对象集合
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    public class map_entrySet {
        public static void main(String[] args) {
            Map<Integer,Integer> m = new HashMap<>();
            m.put(1,11);
            m.put(2,22);
            m.put(3,33);
            m.put(4,44);
            m.put(5,55);
            //返回一个Set集合,其存储类型为Map.Entry<Integer,Integer>接口
            Set<Map.Entry<Integer,Integer>> ent = m.entrySet();
            for (Map.Entry<Integer,Integer> ma : ent){
                System.out.println(ma.getKey() + "---" + ma.getValue());
            }
        }
    }
    
    out:
    1---11
    2---22
    3---33
    4---44
    5---55
    
    • get

    V get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 
    
    • keySet

    Set<K> keySet():获取集合中所有键的集合
    
    • values

    Collection<V> values():获取集合中所有值的集合
    

    长度功能

    • size

    int size():返回集合中键值对的个数
    

    HashMap<K,V>(类)

    依赖于哈希表的Map借口实现,哈希表的作用是确保键的唯一性,
    无特殊方法

    LinkedHashMap<K,V>(类)

    是Map接口的哈希表与链表实现,具有可预知的迭代顺序

    TreeMap<K,V>(类)

    是基于红黑树的Map接口实现。

    使用同TreeSet

    Hashtable<K,V>(类)

    类似于HashMap<K,V>,在HashMap<K,V>出现之前,由于线程安全效率低,所以被HashMap<K,V>替代。

    一些问题

    Hashtable和HashMap区别

    • Hashtable线程安全,效率低,不允许null键和null值
    • HashMap:线程不安全,效率高,允许null键和null值

    List,Set,Map等接口是否都继承Map接口

    • List,Set不是继承自Map接口,它们继承自Collection接口
    • Map本身就是一个顶层接口
  • 相关阅读:
    C# 使用SqlBulkCopy类批量复制大数据 快速导入Excel大量数据
    Git的安装与使用
    未能加载文件或程序集“Microsoft.VisualStudio.Web.PageInspector.Loader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。
    Android SDK Manager不能显示所有包的解决办法
    editor多功能文本框在有些计算机上不能正常加载,解决方法,本人用的是把js调用方法放到<body></body>后面)
    MVC URL参数传递+变为空格解决方法
    SQL 查询不重复数据
    Java基本数据类型取值范围
    统计数组中的逆数对个数
    Docker 安装 ElasticSearch
  • 原文地址:https://www.cnblogs.com/wf614/p/11673847.html
Copyright © 2011-2022 走看看