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的键不可重复,如果存入重复元素如何处理

目录
相关文章
|
17天前
|
安全 Java 大数据
|
15天前
|
安全 Java 开发者
【JAVA】哪些集合类是线程安全的
【JAVA】哪些集合类是线程安全的
|
15天前
|
Java
【JAVA】怎么确保一个集合不能被修改
【JAVA】怎么确保一个集合不能被修改
|
2天前
|
存储 安全 Java
Java一分钟之-Map接口与HashMap详解
【5月更文挑战第10天】Java集合框架中的`Map`接口用于存储唯一键值对,而`HashMap`是其快速实现,基于哈希表支持高效查找、添加和删除。本文介绍了`Map`的核心方法,如`put`、`get`和`remove`,以及`HashMap`的特性:快速访问、无序和非线程安全。讨论了键的唯一性、`equals()`和`hashCode()`的正确实现以及线程安全问题。通过示例展示了基本操作和自定义键的使用,强调理解这些概念对编写健壮代码的重要性。
5 0
|
2天前
|
存储 安全 Java
Java一分钟之-集合框架进阶:Set接口与HashSet
【5月更文挑战第10天】本文介绍了Java集合框架中的`Set`接口和`HashSet`类。`Set`接口继承自`Collection`,特征是不允许重复元素,顺序不确定。`HashSet`是`Set`的实现,基于哈希表,提供快速添加、删除和查找操作,但无序且非线程安全。文章讨论了`HashSet`的特性、常见问题(如元素比较规则、非唯一性和线程安全性)以及如何避免这些问题,并提供了代码示例展示基本操作和自定义对象的使用。理解这些概念和注意事项能提升代码效率和可维护性。
9 0
|
2天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
7 0
|
2天前
|
存储 Java
【JAVA基础篇教学】第十篇:Java中Map详解说明
【JAVA基础篇教学】第十篇:Java中Map详解说明
|
2天前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
|
3天前
|
存储 安全 算法
掌握Java并发编程:Lock、Condition与并发集合
掌握Java并发编程:Lock、Condition与并发集合
11 0
|
3天前
|
存储 安全 Java
深入理解Java集合框架
深入理解Java集合框架
9 0