JAVA Map

Map


 

Map接口的概述 

我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同。

A:Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储

B:Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。

C:Collection中的集合称为单列集合,Map中的集合称为双列集合。

需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值


 

Map的功能

A:映射功能:
   V put(K key, V value) :以键=值的方式存入Map集合
B:获取功能:
  V get(Object key):根据键获取值   
int size():返回Map中键值对的个数
C:判断功能:   
boolean containsKey(Object key):判断Map集合中是否包含键为key的键值对   boolean containsValue(Object value):判断Map集合中是否包含值为value键值对   boolean isEmpty():判断Map集合中是否没有任何键值对
D:删除功能:
void clear():清空Map集合中所有的键值对 V remove(Object key):根据键值删除Map中键值对
E:遍历功能: Set
<Map.Entry<K,V>> entrySet():将每个键值对封装到一个个Entry对象中,再把所有Entry的对象封装到Set集合中返回 Set<K> keySet() :将Map中所有的键装到Set集合中返回 Collection<V> values():返回集合中所有的value的值的集合

 


HashMap两种遍历的方法

public static void main(String[] args) {
        //创建Map对象
        HashMap<String,String> hm = new HashMap<>();
        //添加映射关系
        hm.put("001","wndmd");
        hm.put("002","xswl");
        hm.put("003","awsl");

        //获取对象
        Set<Map.Entry<String, String>> entries = hm.entrySet();
        for (Map.Entry<String,String> s:entries
             ) {
            String key = s.getKey();
            String value = s.getValue();
            System.out.println(key + "---" + value);
        }

        //method(hm);
    }

    private static void method(HashMap<String, String> hm) {
        Set<String> keySet = hm.keySet();
        for (String keyset:keySet
             ) {
            String s = hm.get(keyset);
            System.out.println(keyset + "----" + s);
        }
    }

 

HashMap底层是哈希表数据结构,线程是不同步的,可以存入null键,但只有一个Null键。要保证键的唯一性,需要覆盖hashCode方法,和equals方法。线程非同步的

HashTable:底层是哈希表,不可以存入Null键Null值,线程是同步的

TreeMap:二叉树,线程不同步。可以用于给Map集中的key键进行排序。

 

 

 

 

posted on 2019-09-26 22:24  viper23333  阅读(140)  评论(0编辑  收藏  举报