在Java 9之前,有Collections.emptyList(),Collections.emptySet()和Collections.emptyMap(),它们明确地且专门用于生成不可修改的空集合. List.of()等也可以做到这一点是他们的API的内部一致性问题,而不是一个革命性的新功能.
但你的主要问题似乎是
Please help me to understand the actual use case of an empty immutable
list / set / map.
这真的有三个问题:
>空集合的用例有哪些?
空集合很有用,因为它们是现实世界数据和算法中出现的情况的自然表示.例如,“到目前为止哪些乘客已经办理登机手续?”什么都没有.哪些任务等待发送?我可以无休止地继续下去.
>不可修改的集合有哪些用例?
可以传递对不可修改集合的引用,而不用担心集合将被修改(无论如何通过该引用).请注意,假设不可修改性得到适当记录,共享该对象的所有参与者都可以依赖它来不改变.除此之外,这对于安全地共享集合(和其他不可修改的对象)而不复制它们非常重要.
>在这些用例中有哪些用例?
空集合在现实世界的数据和算法中自然出现,因此大多数用于不可修改集合的用例都包含空集合.
此外,您没有问过,但可能忽略了这一点,虽然您无法将对象添加到不可修改的空集合中,但您可以将其替换为非空集合,或者在下次提供非空集合时使用,或者类似.