JAVA & Map集合详解

简介: Map集合是一种双列集合,每个元素包含两个数据Map集合的每个元素的格式:Key = value(键值对元素)Map集合也叫 “键值对集合”Map集合非常适合做类似于购物车这样的业务场景 Map的键: 无序、不重复、无索引Map的值: 可重复Map集合后面重复的键对应的值会覆盖前面重复键的值Map集合的键值可以为null 先获取Map集合的全部键的Set集合遍历键的set集合,通过键提取对应值涉及到API...............

目录

前言

一、Map概述

1.Map与collection格式的区别

2.Map集合体系

3.Map集合体系的特点

4.Map实现类的特点

二、实现类

1.Hash Map:

2.LinkedHashMap:

3.TreeMap:

三、Map集合遍历

遍历方式1:键找值

遍历方式2:Lambda

总结


前言

Map集合是一种双列集合,每个元素包含两个数据

Map集合的每个元素的格式:Key = value(键值对元素)

Map集合也叫 “键值对集合”

Map集合非常适合做类似于购物车这样的业务场景


一、Map概述

1.Map与collection格式的区别

collection集合的格式:[元素1, 元素2, 元素3..]

Map集合的完整格式:{Key1 = value1, Key2 = value2, Key3 = value3, . . .}

2.Map集合体系

image.gif

3.Map集合体系的特点

Map的键: 无序、不重复、无索引

Map的值: 可重复

Map集合后面重复的键对应的值会覆盖前面重复键的值

Map集合的键值可以为null

4.Map实现类的特点

image.gif编辑


二、实现类

1.Hash Map:

键:无序、不重复、无索引值:不做要求、可重复

public static void main(String[] args) {
    Map<String,Integer>  maps  =  new  HashMap<>();
    maps.put("练习本", 2);
    maps.put("橡皮擦", 2);
    maps.put("圆珠笔", 4);
    maps.put("练习本", 5);     //覆盖前面的数据
    maps.put(null, null);   //键值可以为null
    System.out.println(maps);
}

image.gif

输出:

{null=null, 橡皮擦=2, 练习本=5, 圆珠笔=4}

2.LinkedHashMap:

键:有序、不重复、无索引值:不做要求、可重复

image.gif

3.TreeMap:

键:排序、不重复、无索引值:不做要求、可重复

可排序:按照键数据的大小默认排序(由小到大)排序,只能对键进行排序

Tree Map集合一定要排序,可以默认排序,也可以将键按照指定规则进行排序

Tree Map跟Tree Set底层原理一样

Tree Map集合自定义排序

1.类实现Comparable接口,重写比较规则

2.集合自定义Comparable比较器对象,重写比较规则

public static void main(String[] args) {
        Map<Integer, String> names = new TreeMap<>();
        names.put(1,"ads");
        names.put(3,"gdf");
        names.put(2,"eac");
        System.out.println(names);
    }

image.gif

输出:

{1=ads, 2=eac, 3=gdf}


三、Map集合遍历

遍历方式1:键找值

public static void main(String[] args) {
    Map<String, Integer> maps = new LinkedHashMap<>();
    maps.put("练习本", 2);
    maps.put("橡皮擦", 2);
    maps.put("圆珠笔", 4);
    maps.put("漫画书", 6);
    maps.put("文件夹", 1);
    System.out.println(maps);
    //{练习本=2, 橡皮擦=2, 圆珠笔=4, 漫画书=6, 文件夹=1}
    //拿到集合的全部键
    Set<String>  keys = maps.keySet();
    //遍历:根据键提取值
    for (String key : keys) {
        int value = maps.get(key);
        System.out.println(key + ":" + value);
    /*  输出:
            练习本:2
            橡皮擦:2
            圆珠笔:4
            漫画书:6
            文件夹:1
     */
    }
}

image.gif

先获取Map集合的全部键的Set集合

遍历键的set集合,通过键提取对应值

涉及到API

image.gif编辑

遍历方式2:Lambda

public static void main(String[] args) {
        Map<String, Integer> maps = new LinkedHashMap<>();
        maps.put("练习本", 2);
        maps.put("橡皮擦", 2);
        maps.put("圆珠笔", 4);
        maps.put("漫画书", 6);
        maps.put("文件夹", 1);
        System.out.println(maps);
        //{练习本=2, 橡皮擦=2, 圆珠笔=4, 漫画书=6, 文件夹=1}
    //简化前
        maps.forEach(new BiConsumer<String, Integer>() {
            @Override
            public void accept(String kk, Integer vv) {
                System.out.println(kk + vv);
            }
        });
    //简化后
       maps.forEach(( k, v) ->{System.out.println(k + v);});
    }

image.gif

maps.forEach(( k, v) ->{System.out.println(k + v);});

image.gif


总结

Set的元素不可重复,Map的键不可重复,如果存入重复元素如何处理

目录
相关文章
|
7天前
|
SQL Java API
使用Java Stream API简化集合操作
使用Java Stream API简化集合操作
|
6天前
|
存储 Java 索引
Java基础之集合
“【7月更文挑战第7天】”Java集合框架用于存放对象,包括List(如ArrayList、LinkedList、Vector)、Set(如HashSet、LinkedHashSet、TreeSet)和Queue(如PriorityQueue、ArrayDeque)。集合存放对象引用,基本类型自动转换为包装类。Collection是最基础接口,其子接口List、Set和Queue定义不同集合行为。Java提供抽象类和实现类简化开发,例如AbstractList、ArrayList、LinkedList等。集合通过Iterator遍历,也可用增强for循环。
35 11
|
5天前
|
存储 安全 Java
Java基础之集合Map
【7月更文挑战第8天】Java中的Map集合以键值对方式存储数据,如`Map&lt;&quot;name&quot;, &quot;张三&quot;&gt;`。Map接口定义了存取、判断、移除等操作,包括`put`、`get`、`containsKey`等方法。HashMap是最常用的实现,基于哈希表,允许null键值,但不保证顺序。其他实现包括同步的Hashtable、处理属性文件的Properties、保持插入顺序的LinkedHashMap、基于红黑树的TreeMap、弱引用的WeakHashMap、并发安全的ConcurrentHashMap和针对枚举优化的EnumMap。
11 4
|
5天前
|
安全 算法 Java
Java面试题:如何使用并发集合,例如ConcurrentHashMap?
Java面试题:如何使用并发集合,例如ConcurrentHashMap?
15 1
|
5天前
|
设计模式 缓存 安全
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
12 1
|
7天前
|
Java API
如何利用Java Stream API简化集合操作?
如何利用Java Stream API简化集合操作?
|
5天前
|
存储 安全 Java
Java面试题:请解释Java中的泛型集合框架?以及泛型的经典应用案例
Java面试题:请解释Java中的泛型集合框架?以及泛型的经典应用案例
10 0
|
5天前
|
安全 Java 开发者
Java多线程:Java中如何创建线程安全的集合,编程中如何优化Java多线程集合
Java多线程:Java中如何创建线程安全的集合,编程中如何优化Java多线程集合
16 0
|
6天前
|
存储 安全 Java
Java Map集合:选择正确的实现方式
Java Map集合:选择正确的实现方式
|
7天前
|
Java API
如何利用Java Stream API简化集合操作?
如何利用Java Stream API简化集合操作?