Java中Map集合初始化并赋值
Java中Map集合初始化并赋值的几种方式:
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); } }
下一篇: