Java中Map集合初始化并赋值

这篇具有很好参考价值的文章主要介绍了Java中Map集合初始化并赋值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java中Map集合初始化并赋值的几种方式:文章来源地址https://www.toymoban.com/news/detail-514947.html

package com.itstone.mok.hutool;

import com.google.common.collect.ImmutableMap;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.HashMap;
import java.util.Map;

@SpringBootTest
public class InitializeMapCollTest {

    private static final Map<String, String> map1 = new HashMap<>();

    static {
        map1.put("张三", "18");
        map1.put("李四", "13");
    }

    /**
     * 方式一: static块
     */
    @Test
    public void test01() {
        // {李四=13, 张三=18}
        System.out.println(map1);
    }

    Map<String, String> map2 = new HashMap<String, String>() {{
        put("张三", "20");
        put("李四", "22");
    }};

    /**
     * 方式二: java8新特性, 双括号初始化;
     * PS: 这种使用双括号进行初始化的语法在执行效率上要比普通的初始化写法要稍低。
     * 第一层括弧实际是定义了一个匿名内部类 ,第二层括弧实际上是一个实例初始化块,这个块在内部匿名类构造时被执行;
     */
    @Test
    public void test02() {
        // {李四=22, 张三=20}
        System.out.println(map2);
    }

    /**
     * 方式三: Guava(要提前引入Guava依赖)
     *    <dependency>
     *         <groupId>com.google.guava</groupId>
     *         <artifactId>guava</artifactId>
     *         <version>28.1-jre</version>
     *    </dependency>
     * <p>
     * PS: ImmutableMap是不可变 Map, 初始化之后不能再调用put方法, 否则报java.lang.UnsupportedOperationException异常;
     * 在实际开发中, 我们用到 ImmutableMap 的场景都是定义系统所需的一些常量。
     */
    @Test
    public void test03() {
        Map<String, String> map3 = ImmutableMap.of("张三", "34", "李四", "24");
        // 或者
        Map<String, String> map4 = ImmutableMap.<String, String>builder()
                .put("张三", "34")
                .put("李四", "24")
                .build();
        // {张三=34, 李四=24}
        System.out.println(map3);
        // {张三=34, 李四=24}
        System.out.println(map4);
    }

    /**
     * 方式四: 对于Java 9或更高版本:
     * Map.of() 和 Map.ofEntries()静态工厂方法提供了一种创建不可变映射的便捷方法。
     */
    @Test
    public void test04() {
        // 1. 最多存储10个元素
        Map<String, String> map5 = Map.of("张三", "21", "李四", "26");
        // {张三=21, 李四=26}
        System.out.println(map5);
        // 2. 没有限制
        Map<String, String> map6 = Map.ofEntries(
                entry("张三", "21"),
                entry("李四", "26")
        );
        // {张三=21, 李四=26}
        System.out.println(map6);
    }

}

到了这里,关于Java中Map集合初始化并赋值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++二维数组的初始化赋值及示例

    C++二维数组可以看作一个表格,横向为表格的行,纵向为表格的列,数组定义时行号在前,列号在后。二维数组的定义格式为: 数据类型  数组名[常量行表达式][常量列表达式] 。 二维数组的元素是按先行后列的顺序存放的,例如,定义一个int a[3][2]的数组,其形式为: a[

    2024年02月12日
    浏览(56)
  • 顺序表创建,初始化,赋值,取值,查找,插入与删除(附小例题)

    由n(n≥0)个数据结构相同的元素构成的有限序列。 1)除了第一个元素外,结构中的每一个数据元素均只有一个前驱 2)除了最后一个元素外,结构中的每一个数据元素均只有一个后驱 用一组地址 连续的存储单元依次 存储线性表的数据元素。 优点 : 随机存储 缺点 :在做插

    2024年02月07日
    浏览(44)
  • 【vue3】优雅的解决reactive()响应式对象初始化重新赋值问题v2

    关联的上篇文章: 【vue3】优雅的解决reactive()响应式对象初始化重新赋值问题_vue3 reactive重新赋值_oumae-kumiko的博客-CSDN博客 在上面该文章提到了reactive该api的不方便之处和相关重置数据方法的解析。下面提供的方法就是自己封装的`$reactive`方法,通过该方法返回响应式数据和重

    2024年02月15日
    浏览(57)
  • c++初始化vector的几种方法

    在C++中,vector是一种动态数组,可以在运行时自由添加、删除元素。初始化vector是创建一个vector对象并为其分配内存空间的过程。以下是C++中初始化vector的几种方法: 默认构造函数 使用默认构造函数创建一个空的vector,如下所示: std::vectorint vec; // 创建空vector 这种方式可用

    2024年02月16日
    浏览(43)
  • SpringBoot启动时的几种初始化操作

    1、静态代码块 static静态代码块,在类加载的时候即自动执行。 2、构造方法 在对象初始化时执行。执行顺序在static静态代码块之后。 3、通过注解@PostConstruct实现 @PostConstruct注解使用在方法上,它可以被用来标注一个 非静态的 void 方法 ,这个方法会在该类被 Spring 容器初始化

    2024年02月09日
    浏览(45)
  • 结构体声明、定义和初始化的几种方式

    五种结构体声明方式: 直接声明结构体类型 声明结构体类型的同时定义结构体变量 不指定结构体名而直接定义结构体变量 使用结构体标记和类型别名 直接声明结构体别名 在C语言中,标记(tag)是在定义struct, union或enum之后使用的标识符。 之所以称其为结构体的“

    2023年04月11日
    浏览(46)
  • 【SpringBoot系列】初始化机制几种实现策略模式

    前言 Spring Boot是一个用于快速构建基于Spring框架的应用程序的开发框架。 它提供了许多便捷的功能和特性,使得开发者可以更加高效地开发和部署应用程序。 其中,初始化策略是Spring Boot中一个重要的概念,它决定了应用程序在启动时如何进行初始化和配置。 本文将介绍S

    2024年02月07日
    浏览(42)
  • QTextDocument的使用方法及几种初始化方式

    qtextDocument并不像控件一样可以通过拖拽方式拉到设计器中使用,也不能直接声明就可以初始化使用,而是需要通过包涵库文件的方式包涵在当前的窗体文件中。 如: 上面说了Qtextdocument并不是控件,它是辅助配合QT中的文本编辑控件进行文本操作的类库。 QTextDocument在使用之

    2024年02月09日
    浏览(49)
  • 【C语言趣味教程】(4) 变量:代码注释 | 变量的声明 | 初始化与赋值 | 作用域与生命周期 | 局部变量与全局变量

      🔗 《C语言趣味教程》👈 猛戳订阅!!! 0x00 引入:注释的作用 \\\"程序员最讨厌两种人:一种是不写注释的人,一种是让我写注释的人。\\\" 相信大家对注释早已有所耳闻,对于注释,C 语言有两种注释风格,我们下面会逐个讲解。   但在这之前,我们先来了解了解注释的作

    2024年02月15日
    浏览(49)
  • C语言中结构体初始化并清零的方法有几种?

    结构体初始化清零方法 在C语言中,结构体初始化并清零的方法有以下几种: 手动赋值为0:结构体定义后在函数内手动将每个成员都赋值为0。例如: 使用memset()函数:可以使用  memset()  函数将结构体的所有成员都设置为0。例如: C99标准的方式:C99标准新增了一个特性,可

    2024年02月17日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包