热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Map集合简单了解(水一章明天Stream流)

MapMap集合的概述和使用双列集合一次可以存两个元素左边称为键,唯一的,右边称为值,可以重复的。对应的关系,称之为键值对I

Map
    Map集合的概述和使用
    双列集合一次可以存两个元素  左边称为键,唯一的,右边称为值,可以重复的。对应的关系,称之为键值对
    Interface Map  K:键的数据类型  V:值得数据类型
    键不能重复,值可以重复
    键和值是一一对应得,每一个键只能找到自己对应得值
    (键+值)这个我们称之为"键值对"或者"键值对对象",在Java中叫做"Entry对象"
    例如 学号和学生  一个学号对应一个学生
    多态得方式创建
    Map得基本使用
    

public class mapTest {/*Map得基本使用*/public static void main(String[] args) {Map  m&#61;new HashMap<>();//添加方法  putm.put("zhangsan","123");m.put("lisi","456");m.put("wangwu","789");System.out.println(m);}


    
    Map得常用方法
    V put(K key,V value)   添加元素
    V remove(Object key)     根据键删除键值对元素
    void clear()             移除所有键值对元素
    boolean containsKey(Object key)判断集合是否包含指定得键
    boolean containsValue(Object value)判断集合是否包含指定得值
    boolean isEmpty()判断集合是否为空
    int size 集合得长度&#xff0c;也就是集合中键值对得个数
    

public class mapTest {/*Map得基本使用*/public static void main(String[] args) {Map  m&#61;new HashMap<>();//添加方法  put//如果要添加得键不存在&#xff0c;那么就会把键值对都添加到集合中//如果要添加得键不存在得&#xff0c;那么会覆盖原来得值&#xff0c;把原来得值作为返回值进行返回m.put("zhangsan","123");m.put("lisi","456");m.put("wangwu","789");System.out.println(m);String zhangsan &#61; m.put("zhangsan", "26");System.out.println(zhangsan);System.out.println(m);//删除String zhangsan1 &#61; m.remove("zhangsan");System.out.println(zhangsan1);System.out.println(m);//清空m.clear();System.out.println(m);//containskey  判断集合是否包含指定得键boolean zhangsan2 &#61; m.containsKey("zhangsan");System.out.println(zhangsan2);//true//containsvalue 判断集合是否包含指定得值boolean b &#61; m.containsValue("123");//trueboolean b1 &#61; m.containsValue("999");//false//判断集合是否为空boolean empty &#61; m.isEmpty();System.out.println(empty);//返回的值为布尔值//size  返回得是键值对得个数int size &#61; m.size();System.out.println(size);}}


    Map得第一种遍历集合方式  
    Set  keySet() 获取所有键得集合
    V get(Object key) 根据键获取值
    代码&#xff1a;
    public class mapTest {
            public static void main(String[] args) {
                //获取并添加元素
                Map  m&#61;new HashMap<>();
                m.put("a","1");
                m.put("b","2");
                m.put("c","3");
                //获取到所有得键
                Set key &#61; m.keySet();
                //i遍历set集合得每一个键
                for (String string : key) {
                    //遍历每一个key&#xff0c;来获取到每一个值
                    String value &#61; m.get(string);
                    System.out.println(string&#43;"     "&#43;value);
                }
            }
        }
    第二种遍历方式
    Set>entrySet() 获取键值对对象得集合
    K getkey() 获取键
    V getValue() 获取值
    代码&#xff1a;
    

public class mapTest {public static void main(String[] args) {//获取并添加元素Map  m&#61;new HashMap<>();m.put("a","1");m.put("b","2");m.put("c","3");//获取到所有得键//        Set key &#61; m.keySet();//        //i遍历set集合得每一个键//        for (String string : key) {//            //遍历每一个key&#xff0c;来获取到每一个值//            String value &#61; m.get(string);//            System.out.println(string&#43;"     "&#43;value);//        }// 获取到所有得键值对对象//Set集合种装的是键值对对像(Entry对象)//而Entry里面装的是键值对Set> entries &#61; m.entrySet();for (Map.Entry entry : entries) {//得到每一个键值对对象String key &#61; entry.getKey();String value &#61; entry.getValue();System.out.println(key&#43;"    "&#43;value);}}


            
        第三种遍历方式
        

public class mapTest {public static void main(String[] args) {//获取并添加元素Map  m&#61;new HashMap<>();m.put("a","1");m.put("b","2");m.put("c","3");//获取到所有得键//        Set key &#61; m.keySet();//        //i遍历set集合得每一个键//        for (String string : key) {//            //遍历每一个key&#xff0c;来获取到每一个值//            String value &#61; m.get(string);//            System.out.println(string&#43;"     "&#43;value);//        }// 获取到所有得键值对对象//Set集合种装的是键值对对像(Entry对象)//而Entry里面装的是键值对//        Set> entries &#61; m.entrySet();//        for (Map.Entry entry : entries) {//            //得到每一个键值对对象//            String key &#61; entry.getKey();//            String value &#61; entry.getValue();//            System.out.println(key&#43;"    "&#43;value);//        }m.forEach((String key,String value)->{System.out.println(key&#43;"    "&#43; value);});}}


    HashMap得特点&#xff1a;
        HashMap是Map里边得一个实现类
        没有额外需要了解得方法&#xff0c;直接用Map得方法就好
        HashMap跟HashSet底层一样是哈希表结构
        依赖hashCode方法和equals方法保证键唯一
        如果键要存储自定义对象&#xff0c;需要重写hashCode和equals方法
    TreeMap得特点
        TreeMap是Map里边得一个实现类
        没有额外需要了解得方法&#xff0c;直接用Map得方法就好
        TreeMap跟TreeSet一样底层是红黑树结构得
        依赖自然排序或者比较器排序&#xff0c;对键进行排序
        如果键是自定义对象&#xff0c;需要实现Comparable接口或者创建TreeMap对象时候给出比较器排序规则
    
    可变参数
            就是形参得个数是可变的
        格式&#xff1a;
            修饰符 返回值类型 方法名(数据类型...变量名){}
        范例&#xff1a;public static    int sum(int...a){}
        这里得变量也就是一个数组
        

public class test6 {public static void main(String[] args) {int getsum &#61; getsum(1,2,3,4,5);System.out.println(getsum);}private static int getsum(int...arr) {int sum&#61;0;for (int i &#61; 0; i


    注意&#xff1a;如果一个方法包含多个参数&#xff0c;可变参数要放到最后


推荐阅读
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了Java中Hashtable的clear()方法,该方法用于清除和移除指定Hashtable中的所有键。通过示例程序演示了clear()方法的使用。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
author-avatar
mobiledu2502879733
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有