collections.singletonmap 是 java 中创建不可变单键值映射最简洁的方式,返回线程安全、只读的 map,支持查询操作但禁止修改,常用于 http 头、单元测试及函数式编程场景。

Collections.singletonMap 是 Java 中创建不可变单键值映射(即只含一个键值对的 Map)最简洁的方式,它返回一个线程安全、不可修改的 Map 实例。
基本用法:传入键和值即可
语法非常直接:
Map<k v> map = Collections.singletonMap(key, value); </k>
例如创建一个表示用户状态的单例映射:
返回的 Map 是不可变的
该方法返回的 Map 实现是只读的,任何修改操作(如 put、remove、clear)都会立即抛出 UnsupportedOperationException:
- ✅ 支持
get()、containsKey()、size()、isEmpty()等查询操作 - ❌ 不支持
put()、putAll()、remove()等写操作
适合的典型场景
这个方法常用于需要临时构造轻量级、一次性映射的地方:
- 作为方法参数传递,比如 HTTP 请求头(
Collections.singletonMap("Content-Type", "application/json")) - 单元测试中模拟简单响应数据
- 替代冗长的
new HashMap() {{ put(k, v); }}双大括号初始化(避免潜在内存泄漏) - 函数式编程中配合 Stream 或 Optional 构造默认返回值
注意类型推断与泛型安全
Java 7+ 支持泛型类型推断,但若传入 null 值或类型不明确,建议显式指定泛型或确保参数类型清晰:
Map
Map map = Collections.singletonMap("k", "v"); // 原生类型,不推荐
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











