前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java开发知识之Java中的Map结构

Java开发知识之Java中的Map结构

作者头像
IBinary
发布2019-05-25 16:35:01
5640
发布2019-05-25 16:35:01
举报
文章被收录于专栏:逆向技术

          Java开发知识之Java中的Map结构

一丶Map接口

  Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value的值. 相当于就是 一一对应关系. 比如你有老婆,你是老公, 一个老公只能有一个老婆(在中国^_^),Kery还决定了存储对象在映射中的存储位置.但不是由Key对象本身决定的.而是一种散列技术进行处理.产生一个散列码的证书值.简单来说就是通过一串算法.算出的一个不会相同的值.

Map接口,mao不可以存储重复元素.所以我们直接看下方法.

常用方法:

Map我们可以看成一张表.所以理解这方方法就很简单了

存放 put 给一个 Key的值. 再给一个Value的值. 可以是泛型存储.

containsKey(object Key)传入一个Key判断这个Key是否在这个表里面.

containsValue 同上.

get(key): 传入一个key值.返回这个key对应的value值. 否则返回NUll

keySet(); 这个有点重要.就是将集合中的key对象.变成一个Set集合存储.可以进行遍历Key值.

Values(): 返回这个集合中所有值对象的 conllection集合.

Map的典型应用.转为 Set进行遍历Key以及对应Values值.

代码语言:javascript
复制
    public static void main(String[] args) throws MyException {
        
        Map<String,Integer> map = new HashMap<>();
        map.put("张三", 1);
        map.put("张三", 1);
        map.put("李四", 1);
        map.put("王五", 1); //key不同,Value值相同.因为key相同的张三.所以不会存储在hash表中.
        //遍历Key值
        IterKey(map);
        //遍历Value值.
        IterValue(map);


    }
    private static void IterValue(Map<String,Integer>map) {
        System.out.println("遍历Values的值");
        Collection<Integer> value = map.values(); //转化为Collection接口类型
        java.util.Iterator<Integer> it = value.iterator();
        while(it.hasNext()) {
            Integer i = (Integer)it.next();
            //转换为字符串输出
            String str = i.toString();
            System.out.print(" " + str);
        }
        System.out.println();
        
    }

    private static void IterKey(Map<String, Integer> map) {
        System.out.println("遍历Key里面所有的方法");
        Set<String> key = map.keySet();
        java.util.Iterator<String> it = key.iterator();
        while(it.hasNext()) {
            String str = (String)it.next();
            System.out.print(" " + str);
        
        }
        System.out.println();
    }
    

我们要用子类去实例化.也就是HashMap()

上面分别遍历了Map表中的Key以及Value的值. 需要进行转换. Key转换为Set集合. Value转换为Collection接口就可以了.

二丶Map接口以及子类.

  Map接口有自己的两个子类.

分别是

1.HashMap类.

2.TreeMap类.

各自不同的特点

  HashMap类:

HashMap类是基于哈希表的Map接口的实现.此实现提供所有的可选的映射操作.并且匀速使用null值跟建. 但必须保证key值得唯一性才可以. HashMap通过哈希表对其内部的映射关系进行快速查找.此类不保证映射的顺序.特别是他不会保证顺序是恒久不变的.

  TreeMap:

TreeMap类不仅实现了Map接口. 还是先了java.util.SortdMap接口,因此集合中的映射关系有一定得顺序.但是在添加跟删除定位映射关系的时候.TreeMap比HashMap类性能稍差.因为有顺序排列的.所有key值不能为Null

代码其不同

代码语言:javascript
复制
public static void main(String[] args) throws MyException {
        
        Map<String,Integer> map = new HashMap<>();
        map.put("张三", 1);
        map.put("张三", 2);
        map.put("李四", 4);
        map.put("王五", 5); //key不同,Value值相同.因为key相同的张三.所以不会存储在hash表中.
        //遍历Key值
        IterKey(map);
        //遍历Value值.
        IterValue(map);
        
        Map<String,Integer> treeMaps = new TreeMap<>();
        treeMaps.putAll(map);
        //遍历treeMap以及值.跟上面一样.
        IterKey(treeMaps);
        IterValue(treeMaps);


    }

输出结果

一个是有序,一个是无序的.

三丶总结

  1.map 使用的是映射关系 key value 添加时put方法. 删除是 remove,

  2.map的遍历如果遍历key 要使用KeySet方法转为Set集合.进行遍历. 如果是value 在使用Collection接口 使用方法values返回. 进行遍历

  3.hashMap不保证顺序, key可以为null但是不能重复. TreeMap可以保证顺序,但是key不能为Null

  4.注意map转为Set以及Colliection转换.以及迭代.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •           Java开发知识之Java中的Map结构
    • 一丶Map接口
      • 常用方法:
      • Map的典型应用.转为 Set进行遍历Key以及对应Values值.
    • 二丶Map接口以及子类.
      • 代码其不同
    • 三丶总结
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档