java 初始化hashmap_Java如何创建和初始化一个HashMap?

如何创建和初始化一个HashMap,看似简单的问题,其实真的挺简单的,但我们希望从多种方法中,选择一个最简洁方便、可读性也高的方法。

代码块初始化

可以使用静态代码块和非静态代码块,都可以进行初始化,要针对变量是否是静态变量来选择。

private static Map map;

{

map = new HashMap<>();

map.put("name", "pumpkin");

map.put("location", "Guangzhou");

}

双大括号初始化

Map map = new HashMap() {{

put("name", "pumpkin");

put("sex", "M");

}};

assertEquals("pumpkin", map.get("name"));

虽然这是一种可行的办法,但并不认可这种方法,具体原因可阅读公众号之前的文章。

使用JAVA集合工具类Collections

map = Collections.emptyMap();

map = Collections.singletonMap("name", "pumpkin");

assertEquals("pumpkin", map.get("name"));

需要注意的是,这产生的是不可变的Map。

使用Java 8 Stream的方法

map = Stream.of(

new AbstractMap.SimpleEntry<>("name", "Pumpkin"),

new AbstractMap.SimpleEntry<>("age", "18"))

.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

assertEquals("Pumpkin", map.get("name"));

也可以用Stream生成不可变的Map,如下:

map = Stream.of(

new AbstractMap.SimpleEntry<>("name", "Pumpkin"),

new AbstractMap.SimpleEntry<>("age", "18"))

.collect(Collectors.collectingAndThen(

Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue),

Collections::unmodifiableMap

));

使用Guava库

Guava库应该大多数Java开发都知道,它是google开源的类库,里面有许多非常方便的工具与类。

map = ImmutableMap.of("key1", "value1", "key2", "value2");

map = Maps.newHashMap(map);

以上两行代码分别生成不可变的Map和可变的Map。

总结

本文介绍了生成空的Map,只有一个Entry的Map;可变的Map和不可变的Map。大家可根据自己的需求自行选择。

Java 9对这块有比较大的改进,有兴趣的同学就自行研究吧。

a2891ec7837c54b7a6bd7966cbb6b38a.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值