Java基础Map集合详析

目录
  • 一、概述
  • 二、创建Map集合的对象方式
  • 四、Map的获取方法
  • 五、Map集合的遍历方式
    • 方式一:
    • 方式二:

一、概述

  • Interface Map k:键的类型;V:值的类型
  • 将键映射到值的对象;不能包含重复的键;每个键可以映射到最多一个值

二、创建Map集合的对象方式

  • 1.使用多态的方式
  • 2.具体实现类HashMap
public static void main(String[] args) {
        //创建Map集合对象
        Map<String,String> m=new HashMap<String,String>();
        //添加元素使用put方法,默认自然排序
        m.put("02","李四");
        m.put("04","赵六");
        m.put("01","张三");
        m.put("03","王五");
        System.out.println(m);
    }
}

三、Map集合的常用方法

方法名 说明
V put(K key,V value) 添加元素,添加重复键值元素会覆盖
V remove(Object key) 根据键删除键值对元素
void clear() 清除所有的键值对元素
Boolean containsKey(Object key) 判断集合是否包含指定的键,包含返回true
Boolean containsValue(Object value) 判断集合是否包含指定的值,包含返回true
Boolean isEmpty() 判断集合是否为空
int size() 获取集合的长度,也就是键值对的个数
public class MapDemo01 {
    public static void main(String[] args) {
        //创建Map集合对象
        Map<String,String> m=new HashMap<String,String>();
        //添加元素,put方法
        m.put("1","张三");
        m.put("2","李四");
        m.put("3","王五");
        m.put("4","赵六");
        // System.out.println(m);
        //根据键删除键值对元素
        System.out.println(m.remove("3"));//切记键是什么类型就写什么类型,不然会返回null
        System.out.println(m);
        //清除所有键值对元素
        m.clear();
        //Boolean isEmpty()判断集合是否为空
        System.out.println(m.isEmpty());
       // System.out.println(m);
        //Boolean containsKey(Object key);判断集合中是否包含指定的键
        System.out.println(m.containsKey("5"));//切记键是什么类型就写什么类型,不然会返回null
        //Boolean containsValue(Object value)判断集合是否包含指定的值,包含返回true
        System.out.println(m.containsValue("张三"));
        //int size()获取集合的长度,也就是键值对的个数
        System.out.println(m.size());
    }
}
​

四、Map的获取方法

方法名 说明
V get(Object key) 根据键获取值
Set<K>keySet() 获取所有键的集合
Collection<V>values() 获取所有值的集合
Set<Map.Entry<K,V>>entrySet() 获取所有键值对对象的集合
public class MapDemo02 {
    public static void main(String[] args) {
        //创建Map对象
        Map<String,String> m=new HashMap<String,String>();
        //添加元素
        m.put("1","张三");
        m.put("3","李四");
        m.put("4","王五");
        m.put("2","赵六");
//        System.out.println(m);
        //V get(Object key)根据键获取值
        System.out.println(m.get("3"));//要注意键的类型,类型不对会报null
        //Set<K>keySet()获取所有键的集合,因为返回的是个集合,所以用增强for遍历
        Set<String> k=m.keySet();
        for (String key:k){
            System.out.println(key);
        }
        //Collection<V>values()获取所有值的集合,注意,他会按照键的排序对值进行排序
        Collection<String> c=m.values();
        for (String v:c){
            System.out.println(v);
        }
​
    }
}

五、Map集合的遍历方式

方式一:

  • 1.先获取Map集合中的所有键的集合,使用方法setKey()
  • 2.遍历所有键的集合获取每一个键
  • 3.通过每一个键获取相对应的值 getValues方法
public static void main(String[] args) {
        //方式一
        //创建Map集合对象
        Map<String,String> m=new HashMap<String,String>();
        //添加键值对
        m.put("1","张三");
        m.put("3","李四");
        m.put("4","王五");
        m.put("2","赵六");
        //获取所有键的集合
        Set<String>s=m.keySet();
        //遍历
        for (String key:s){
            //再通过键获取相对应的值
            String value=m.get(key);
            System.out.println(key+","+value);
        }
    }
}

方式二:

  • 1.获取所有键值对的集合,使用Set<Map.Entry<K,V>>entrySet()方法
  • 2.遍历这个集合获得每一个键值对 对象也就是Map.Entry对象
  • 3.再根据键值对对象获取值和键

getKey()获取键

getValue()获取值

public static void main(String[] args) {
//        //方式一
//        //创建Map集合对象
//        Map<String,String> m=new HashMap<String,String>();
//        //添加键值对
//        m.put("1","张三");
//        m.put("3","李四");
//        m.put("4","王五");
//        m.put("2","赵六");
//        //获取所有键的集合
//        Set<String>s=m.keySet();
//        //遍历
//        for (String key:s){
//            //再通过键获取相对应的值
//            String value=m.get(key);
//            System.out.println(key+","+value);
//        }
        //方式二
        //创建Map集合对象
        Map<String,String> m=new HashMap<String,String>();
        //添加键值对
        m.put("1","张三");
        m.put("3","李四");
        m.put("4","王五");
        m.put("2","赵六");
        //获取所有键值对的集合Set<Map.Entry<K,V>>entrySet()
        Set<Map.Entry<String,String>> s= m.entrySet();
        //遍历该集合
        for (Map.Entry<String,String> ss:s){
            //通过键值对对象获取键值
            String key=ss.getKey();
            //通过键值对对象获取值
            String value=ss.getValue();
            System.out.println(key+","+value);
​
        }
    }
}

到此这篇关于Java基础Map集合详析的文章就介绍到这了,更多相关Java Map集合内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java集合框架之Set和Map详解

    目录 Set接口 HashSet TreeSet Map接口 HashMap TreeMap Set接口 set接口等同于Collection接口,不过其方法的行为有更严谨的定义.set的add方法不允许增加重复的元素.要适当地定义set的equals方法:只要俩个set包含同样的元素就认为它们是相同的,而不要求这些元素有相同的顺序.hashCode方法的定义要保证包含相同元素的俩个set会得到相同的散列码. --Java核心技术 卷一 public interface Set<E> exte

  • Java Map集合用法详解

    目录 Map集合的概述 常用方法: 遍历方式: Map的实现类: HashMap TreeMap 集合嵌套(补充知识): 高频面试题 1.Map 2.HashMap的底层实现 Map集合的概述 概述:interface Map<K,V> 其中K是键的类型,键是唯一的,不重复.V是值的类型,是可以重复.且每个键可以映射最多一个值.注意的是如果存在两个相同的键时,则会将现在的值替换之前的值. 创建方式:以多态的形式创建对象. 特点: 键值对映射关系 一个键对应一个值 键不能重复,值可以重复 元素存

  • Java集合之Map接口的实现类精解

    目录 HashMap类 1.HashMap类概述 2.HashMap的存储结构(底层实现原理) 3.HashMap源码中的重要常量 LinkedHashMap类 TreeMap类 1.TreeMap类概述 2.自然排序 3.定制排序 Hashtable类 Properties类 HashMap类 1.HashMap类概述 HashMap是 Map 接口使用频率最高的实现类,允许使用null键和null值,与HashSet一样,不保证映射的顺序. 所有的key构成的集合是Set:无序的.不可重复的

  • Java 深入浅出掌握Map集合之双列集合

    目录 前言 Map集合 Map概述 Map特点 Map集合的功能 Map集合的遍历 Map集合的各个子类 集合框架图 总结 前言 友友们,大家好哇!这一期我为大家带来双列集合(Map)的相关知识点讲解,那么什么是双列集合呢?Map集合就是采用了key-value键值对映射的方式进行存储.通俗的讲,和查字典类似,查字典时,我们通过偏旁或笔画等查询汉字,集合里通过key找到对应的value,用学生类来说,key相当于学号,value对应name. Map集合 Map概述 Map是一种依照键(key)

  • 深入浅出讲解Java集合之Map接口

    目录 一.Map接口继承树 二.Map接口中的常用方法 三.源码分析 1. HashMap的底层实现原理? 2.LinkedHashMap的底层实现原理(了解) 四.Collections工具类 一.Map接口继承树 Map:双列数据,存储key-value对的数据 ---类似于高中的函数:y = f(x) A.HashMap:作为Map的主要实现类:线程不安全的,效率高:存储null的key和value a.LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历. 原因

  • Java案例之HashMap集合存储学生对象并遍历

    一.需求:创建一个HashMap集合,键是学号(String),值是学生对象(Student),存储三个键值对元素,并遍历 分析: 1.定义学生类 2.创建HashMap集合对象 3.创建学生对象 4把学生添加到集合中 5.遍历集合 public class StudentDemo {   public static void main(String[] args) {       //创建Map集合对象       Map<String,Student> m=new HashMap<S

  • 关于Java Guava ImmutableMap不可变集合源码分析

    目录 Java Guava不可变集合ImmutableMap的源码分析 一.案例场景 二.ImmutableMap源码分析 Java Guava不可变集合ImmutableMap的源码分析 一.案例场景 遇到过这样的场景,在定义一个static修饰的Map时,使用了大量的put()方法赋值,就类似这样-- public static final Map<String,String> dayMap= new HashMap<>(); static { dayMap.put("

  • Java集合-HashMap

    目录 概述 重要的参数 put函数的实现 get函数的实现 hash函数的实现 RESIZE的实现 概述 ①以数组+链表+红黑树实现.主要用来处理具有键值对特征的数据.②当链表长度大于阈值(或者红黑树的边界值,默认为 8 )并且当前数组的长度大于 64 时,此时此索引位置上的所有数据改为使用红黑树存储.③补充:将链表转换成红黑树前会判断,即便阈值大于 8,但是数组长度小于 64,此时并不会将链表变为红黑树,而是选择逬行数组扩容.④每个Node节点存储着用来定位数据索引位置的hash值,K键,V值

  • Java集合框架之Map详解

    目录 1.Map的实现 2.HashMap和Hashtable的区别 3.介绍下对象的hashCode()和equals(),使用场景 4.HashMap和TreeMap应该怎么选择,使用场景 5.Set和Map的关系TODO 6.常见Map的排序规则是怎样的? 7.如果需要线程安全,且效率高的Map,应该怎么做? 8.介绍下HashMap 9.什么是Hash碰撞?常见的解决办法有哪些,hashmap采用哪种方法? 10.HashMap底层是数组+链表+红黑树,为什么要用这几类结构呢? 11.为

  • Java基础Map集合详析

    目录 一.概述 二.创建Map集合的对象方式 四.Map的获取方法 五.Map集合的遍历方式 方式一: 方式二: 一.概述 Interface Map k:键的类型:V:值的类型 将键映射到值的对象:不能包含重复的键:每个键可以映射到最多一个值 二.创建Map集合的对象方式 1.使用多态的方式 2.具体实现类HashMap public static void main(String[] args) {       //创建Map集合对象       Map<String,String> m=

  • js模仿java的Map集合详解

    java.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 List 和 Map.List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建.存储和操作任何类型对象元素列表.List 适用于按数值索引访问元素的情形. Map 提供了一个更通用的元素存储方法.Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值.从概念上而言,您可以将 List 看作是具有数值键的 Map.而实际上,除

  • Java基础之集合框架详解

    一.前言 本节学习到的内容有以下5类,不分先后顺序: 集合Collection体系结构 List子类 与集合结合使用的迭代器对象 集合与数组的区别? 常见的一般数据结构整理 二.集合的由来? Collection List ArrayList Vector LinkedList Set hashSet treeSet 在集合没有出现之前,使用对象数组来存储对象,但是,对象数组的长度一旦确定,则不可以发生变化,所以我们希望存在一个容器就像StringBuffer一样存储字符串,同时依据传入的值的个

  • Java基础之集合Set详解

    一.概述 Set是Java中的集合类,提供了一种无顺序,不重复的集合.常用的子类包括HashSet, TreeSet等. HashSet底层使用HashMap实现,根据元素的hashCode和equals来判断是否为重复元素.当元素的hashCode相同且equals返回true时则认为是重复元素.因为使用了hash算法所以HashSet有很好的添加和访问性能.可以放入null但只能放一个null TreeSet底层使用红黑树实现,Set上的元素被放在一个自动排序的红黑树中.不能放入null 二

  • Java Map集合详解与演示

    目录 一.前言 二.Map介绍 三.Map的基本功能 Map功能演示: 四. Map集合的获取功能 Map遍历演示: 一.前言 map集合是我们常使用的集合,了解和使用map集合是必要的 二.Map介绍 基本形式: public interface Map<K,V> Map是一个接口,我们不能直接创建对象,可以通过多态的形式创建对象,Map中有两个 参数,一个是K表示键,一个是V表示值,且一个键有且对应一个值,Map中不能包含重复的 键,若是有重复的键添加,则会以最后一次的键为准,而其他的键会

  • Java基础之TreeMap详解

    一.写在前面 TreeMap的底层数据结构是红黑树,且TreeMap可以实现集合元素的排序. 所以TreeMap的源码需要实现: 1.红黑树的数据结构,以及红黑树的节点插入,删除,以及红黑树的自平衡操作,如左旋,右旋,以及节点变色 2.红黑树需要支持按照指定的比较器进行排序,或者进行自然排序. 二.定义 public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Clo

  • Java基础之FastJson详解

    一.fastJson将json格式字符串转化成List集合 注:json格式字符串必须符合数组型格式如[{"a":a},{"b":b}] 场景一:前端向后台传递数组格式的json字符串,如何转化成List集合 List<AccountBean> readJson2List =JSON.parseArray(json, AccountBean.class)注意这里是Bean.class而不是List.class @Test public void read

  • java基础之方法详解

    一.什么是方法 Java方法是语句的集合,他们在一起执行一个功能. 1.方法是解决一类问题的步骤的有序组合 2.方法包含于类或对对象中 3.方法在程序中被创建,在其他地方被应用 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的结合.我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样利于我们后期的扩展. 当然只读文字不能完全理解,下面的代码一定要自己一个个敲,仔细品味: //类 public class Demo01 { //mian方法,可理解为系统自定义的

  • Java基础之数组详解

    前言 我们了解数组这个概念之前,我们先思考下面几个问题. 如果我们需要两个数据,那么直接创建两个变量即可 int a; int b; 如果需要五个数据,那么可以创建五个变量 int a; int b; int c; int d; int f; 但如果我们需要100个甚至是1万个数据,那么我们创一万个变量?显然这是不现实的.这个时候就需要我们的数组来起作用!帮我们"批量"创建变量. 由上可以得出:数组的本质就是让我们能"批量"创建相同类型的变量! 一.数组的概念 数组

  • Java基础 Servlet监听器详解

    Java基础 Servlet监听器详解 1 概念:Servlet监听器,用来监听web容器的一些对象状态的变化,主要是ServletContext.HttpSession.HttpServletRequestl三类对象状态.Servlet的监听器 2  Servlet2.4和JSP2.0规范中一共定义了有八个接口类和六种事件. 3 web.xml中定义Servlet的url-pattern时如果url-pattern的值的"/",则说明该Servlet是该项目的默认Servlet,当请

随机推荐