Java Map接口,方法remove取对象

时间:2016-09-29 12:46:08

标签: java collections

我有以下代码段:

Set<Short> map=new HashSet<>();
short i=1;
map.add(i);
map.remove(i-1)

它忽略了删除,因为I-1被自动转换为整数。但是,为什么没有删除(V)方法与泛型?这很糟糕,我应该看到一个例外,或者这个方法应该是通用的。没有任何意义。为什么这样设计?

问题是:

如果我们有Set,为什么我们不在其中删除方法(E e)?我发现它是因为内部有一个Object数组。但为什么?如果我们有一套E类通用类型,为什么我们不将E []作为内部存储?对我来说,这绝对没有意义。

例如我期望:

class Set<E>{
   private E[] values;

   public void add(E e);

   public void remove(E e);

}

但我得到了:

class Set<E>{
   private Object[] values;

   public void add(E e);

   public void remove(Object e);

}

为什么不这样做?

class Set<E>{
   private E[] values;

   public void add(E e);

   public void remove(E e){ 
      for(E v:values){
         if(v.equals(e)){
            //remove element
         }
      }
    }
}

????

0 个答案:

没有答案