【问题标题】:Java add remove methods of setsJava添加集合的删除方法
【发布时间】:2013-06-12 20:37:17
【问题描述】:

为什么add(<T> element)remove(Object o) 方法接受不同的参数?

例如在Set<Short> 中添加短元素。为什么remove方法接受Object?如果不能添加任何其他数据类型,为什么要删除其他数据类型?

谢谢。

【问题讨论】:

  • JavaDoc 很好地解释了这一点:如果存在,则从该集合中删除指定元素(可选操作)。更正式地说,删除元素 e 使得 (o==null ? e==null : o.equals(e)).
  • remove 不必对所需的参数类型非常挑剔。

标签: java methods add set


【解决方案1】:

add(<T> element) :确保只添加一个 T 元素。

remove(Object o) : 你可以删除 T 元素,即使它是由 Object 引用所引用的。

例如:

T t = new T();
Set<Short> set = new HashSet<Short>();
Short number = 2;
set.add(number);
Object numberObject = number;
set.remove(numberObject) // it will remove 2 from the set.

为什么要删除其他数据类型?我们不会删除另一种数据类型,但我们可以删除数据,即使它被 Object 引用引用(如示例中所示)。

【讨论】:

    【解决方案2】:

    remove(obj) 方法删除对象,使得(obj == null ? e ==null : obj.equals(e))true。这是因为equals(Object) 方法采用Object,所以obje 不必属于同一类型。

    【讨论】:

      猜你喜欢
      • 2012-06-28
      • 1970-01-01
      • 2012-01-12
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多