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

目录
相关文章
|
1月前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第17天】本文详细介绍了Java编程中Map的使用,涵盖Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的并发处理和性能优化技巧,适合初学者和进阶者学习。
50 3
|
1月前
|
存储 Java API
深入剖析Java Map:不只是存储数据,更是设计艺术的体现!
【10月更文挑战第17天】在Java编程中,Map是一种重要的数据结构,用于存储键值对,并展现了设计艺术的精髓。本文深入剖析了Map的设计原理和使用技巧,包括基本概念、设计艺术(如哈希表与红黑树的空间时间权衡)、以及使用技巧(如选择合适的实现类、避免空指针异常等),帮助读者更好地理解和应用Map。
95 3
|
1月前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
59 2
|
1月前
|
存储 Java
告别混乱!用Java Map优雅管理你的数据结构
【10月更文挑战第17天】在软件开发中,随着项目复杂度增加,数据结构的组织和管理至关重要。Java中的Map接口提供了一种优雅的解决方案,帮助我们高效、清晰地管理数据。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,有效提升了代码质量和维护性。
82 2
|
13天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
23 2
|
13天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
17天前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
17天前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
17天前
|
Java 开发者
|
22天前
|
存储 Java API
Java交换map的key和value值
通过本文介绍的几种方法,可以在Java中实现Map键值对的交换。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。对于简单的键值对交换,可以使用简单遍历法或Java 8的Stream API;对于需要处理值不唯一的情况,可以使用集合存储或Guava的Multimap。希望本文对您理解和实现Java中的Map键值对交换有所帮助。
28 1
下一篇
无影云桌面