【问题标题】:Why java.util.List.clear() is an "optional operation"? [duplicate]为什么 java.util.List.clear() 是“可选操作”? [复制]
【发布时间】:2014-09-11 12:40:27
【问题描述】:

根据Javadoc

无效清除()

Removes all of the elements from this list (optional operation). The list will be empty after this call returns.

为什么清除列表是可选操作?

这不会清除 RAM 以清除包含数千个对象的列表吗?

【问题讨论】:

  • @Joe 这不是重复的,因为另一个问题只询问什么是可选操作,而这个问题询问为什么特定方法是可选的。
  • 检查 cmets 和其他答案。 “如果你有一个 ImmutableSet,那么如果该操作不存在是有意义的”已经存在于现有问题中。

标签: java list


【解决方案1】:

List 可能是不可变的。

List 不可变时应该怎么做?您无法清除不可变的 List,因此方法 clear() 必须是可选操作。

【讨论】:

    【解决方案2】:

    它与 RAM 清除无关,它的 GC 最终将垃圾收集那些对象。

    更多的是关于明显无法完成工作的情况。

    例如,当您尝试通过调用 Arrays.asList(arrayObject) 从数组中获取列表时,无法修改此列表。此操作导致 java.lang.UnsupportedOperationException。

    【讨论】:

    • +1 Arrays.asList 不是不可变的,但是元素的数量不能改变。
    猜你喜欢
    • 2016-02-14
    • 1970-01-01
    • 2014-01-28
    • 2010-12-04
    • 2013-01-11
    • 1970-01-01
    • 2012-03-17
    • 2017-02-11
    • 2014-03-17
    相关资源
    最近更新 更多