hashmap如何初始化

现在知道的有两种:

1)

Map<String, String> hashMap = new HashMap<String, String>(){
            {
            put("A", "a");
            put("B", "b");
            }            
};

2)使用静态初始化块

Map<String, String> hashMap = new HashMap<String, String>();

static{

     hashMap.put("A", "a");

     hashMap.("B", "b");

}

做个记录了。

### Java 中 HashMap初始化方法 在 Java 编程语言中,`HashMap` 是一种常用的数据结构,用于存储键值对。以下是几种常见的 `HashMap` 初始化方法及其适用场景。 #### 1. 使用构造函数初始化 可以通过不同的构造函数来初始化 `HashMap` 对象。最简单的形式是无参构造函数: ```java Map<String, Integer> map = new HashMap<>(); ``` 如果需要指定初始容量和加载因子,则可以传递相应的参数给构造函数[^3]: ```java // 创建一个具有初始容量为64且负载因子为默认值(0.75)的HashMap Map<String, Integer> mapWithCapacity = new HashMap<>(64); // 创建一个具有自定义负载因子0.5的HashMap Map<String, Integer> mapWithLoadFactor = new HashMap<>(64, 0.5f); ``` #### 2. 静态块初始化 当需要在一个类加载时就完成 `HashMap` 的初始化操作时,可以使用静态初始化器[^1]: ```java class Example { static Map<String, String> map; static { map = new HashMap<>(); map.put("Key1", "Value1"); map.put("Key2", "Value2"); } } ``` 这种技术适用于那些在整个程序生命周期内都需要保持不变的地图数据集。 #### 3. 双括号语法(匿名内部类) 虽然这种方法简洁方便,但它实际上创建了一个继承自 `HashMap` 的匿名子类实例[^2]。因此,在某些情况下可能会引起序列化问题: ```java Map<String, String> map = new HashMap<>() {{ put("KeyA", "ValueA"); put("KeyB", "ValueB"); }}; ``` 注意:由于此方式涉及到了匿名内部类的概念,所以可能导致额外的对象引用被保留下来,进而影响到垃圾收集机制的工作效率[^4]。 #### 4. 文本字符串表示法 对于一些特定需求来说,可能希望通过纯文本的形式快速构建出所需的映射关系。尽管这不是官方推荐的做法,但在实际开发过程中确实存在这样的技巧: 假设我们有一组固定的 key-value pairs 表达成如下格式:"key1=value1,key2=value2,..." 那么我们可以编写辅助函数将其解析并填充至目标 hashmap 当中去: ```java public static Map<String, String> initFromText(String text){ Map<String,String> result=new HashMap<>(); Arrays.stream(text.split(",")).forEach(pair->{ String[] keyValue=pair.split("="); if(keyValue.length==2){ result.put(keyValue[0], keyValue[1]); } }); return result; } // Usage example: Map<String, String> myMap = initFromText("name=john,age=30"); System.out.println(myMap.get("name")); // Output: john ``` 以上就是关于如何在不同情境下正确有效地初始化 Java 中的 HashMap 结构的一些常见模式介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值