Collections.emptySet() 与 new HashSet<>()

Gar*_*any 1 java collections hashset is-empty

如何验证 Set 是空集还是 new HashSet<>() ?尝试了两种方法 -

  1. size
  2. CollectionUtils.isEmpty() 两者产生相同的值。

rzw*_*oot 6

当然,fresh是空的, ornew HashSet<>()也是空的。要点是:两者都是空集,我不知道你为什么要区分这两者之间的区别。Set.of()Collections.emptySet()

唯一的区别是,new HashSet<>()现在是空的,但以后可能不会是空的(它可以更改;您可以向其中添加内容),而根据规范,Set.of()or的结果Collections.emptySet(),它们现在是空的,以后也将是空的:无法向它们添加任何内容,对它们调用 .add 将导致运行时异常。

这相当于问:我如何知道它是否是不可变的。不幸的是,你基本上不能,所以这又回到了:你为什么需要知道?