Collections.emptyList() 返回不可变空列表,适用于无元素的List场景;Collections.emptyMap() 返回不可变空映射,用于无键值对的Map场景。两者均为泛型、线程安全、单例实现,避免null返回和额外开销,选择依据为所需集合类型。

Java 中 Collections.emptyList() 和 Collections.emptyMap() 都是来自 java.util.Collections 工具类的静态方法,用于返回不可变的空集合实例。它们的主要区别在于所表示的集合类型不同,适用场景也不同。
1. 类型和用途不同
• emptyList() 返回一个不可变的空列表(List),适用于需要返回空列表但又不希望被修改的场景。
• emptyMap() 返回一个不可变的空映射(Map),用于表示没有任何键值对的 Map。
例如:
立即学习“Java免费学习笔记(深入)”;
• 你有一个方法返回用户列表,如果没有用户,可以返回 Collections.emptyList()。
• 如果某个配置没有参数,返回一个空的 Map,使用 Collections.emptyMap() 更合适。
2. 泛型约束不同
• emptyList() 返回的是 List 类型,可以根据上下文推断泛型类型,比如 List 或 List。
• emptyMap() 返回的是 Map,同样支持泛型,如 Map。
示例代码:
LanguagePro
LanguagePro是一款强大的AI写作助手,可以帮助你更好、更快、更有效地写作。
120 查看详情
“`java
List emptyList = Collections.emptyList();
Map emptyMap = Collections.emptyMap();
“`
3. 不可变性与线程安全
• 两者返回的对象都是不可变的:不能添加、删除或修改元素。
• 因为内部实现是单例模式,多次调用返回的是同一个实例,因此是线程安全的。
• 尝试修改会抛出 UnsupportedOperationException。
例如:
立即学习“Java免费学习笔记(深入)”;
“`java
List list = Collections.emptyList();
list.add(“test”); // 抛出 UnsupportedOperationException
“`
4. 使用建议
• 在定义方法返回值时,如果可能为空,优先返回 emptyList() 或 emptyMap() 而不是 null,避免调用方出现空指针异常。
• 它们比手动创建 new ArrayList() 或 new HashMap() 更高效,因为是共享的单例实例。
基本上就这些。选择哪个方法取决于你需要的是空列表还是空映射。
以上就是Java Collections.emptyList和emptyMap区别的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/722542.html
微信扫一扫
支付宝扫一扫