JJJJJava-Map

2019-08-17  本文已影响0人  南在南方i

Java中的map是一个很重要的集合,他是一个接口,下面继承它实现了多个实现类,这些类各有千秋,各自有个各自的优点和缺点

image

Map

map的主要特点是键值对的形式,一一对应,且一个key只对应1个value。其常用的map实现类主要有HashMap、HashTable、TreeMap、ConcurrentHashMap、LinkedHashMap、weakHashMap等等,在java中map是一个接口,是和collection接口同一等级的集合根接口

键值对

特点

HashMap

HashMap是用哈希表(直接一点可以说数组加单链表)+红黑树实现的map类

image
上图便是HashMap的存储结构,HashMap的这种特殊存储结构在获取指定元素前需要把key经过哈希运算,得到目标元素在哈希表中的位置,然后再进行少量比较即可得到元素,这使得 HashMap 的查找效率极高。(说白了HashMap就是用了拉链法的哈希表,也有叫桶数组的)

特点

//HashMap  集合  存储数据的特点:键key - 值value
        //key不能重复 可以是任意的对象类型 通常使用字符串String
        HashMap<String,Integer> score = new HashMap<>();

        //添加对象
        score.put("Chinese",89);
        score.put("Math",94);
        score.put("English",92);

        //更改某个键对应的值
        score.put("English",91);

        //获取键值对的个数
        score.size();

        //获取所有的key
        System.out.println(score.keySet());

        //获取所有的value
        System.out.println(score.values());

        //获取Entry:key-value
        System.out.println(score.entrySet());

        //获取一个键key对应的值
        System.out.println(score.get("English"));

遍历

for (String key:score.keySet()){
            //通过key得到值
            int s = score.get(key);
            System.out.println("key:"+key+" value:"+s);
        }
 //  一个Entry管理一个键值对  getkey getvalue
        Set <Map.Entry<String,Integer>> entrys =  score.entrySet();
        for (Map.Entry<String,Integer> entry:entrys){
            //得到Entry对应的Key
            String key = (String)entry.getKey();

            //获取Entry对应的值
            Integer value = (Integer)entry.getValue();

            System.out.println("key:"+key+" value:"+value);
        }
上一篇 下一篇

猜你喜欢

热点阅读