【Java必修课】如何创建和初始化一个HashMap?

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

代码块初始化

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

private static Map<String, String> map;
{
    map = new HashMap<>();
    map.put("name", "pumpkin");
    map.put("location", "Guangzhou");
}

双大括号初始化

Map<String, String> map = new HashMap<String, String>() {{
    put("name", "pumpkin");
    put("sex", "M");
}};
assertEquals("pumpkin", map.get("name"));

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

 

使用Java集合工具类Collections

ap = 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对这块有比较大的改进,有兴趣的同学就自行研究吧。

 

----------the end----------

觉得不错就扫码关注公众号呗,更多精彩还在后面哦~

学好技术,过好生活。

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值