推荐给好友 上一篇 | 下一篇

Set删除整数的问题


声明
  • 声明: 1、任何网站转载本站点内容时需注明来自JAVA-CN.COM,否则我们有权将根据《互联网著作权行政保护办法》追究其相应法律责任; 2、JAVA中文站社区刊登此文只为传递信息,并不表示赞同或者反对.
import java.util.*;   
  1.   
  2. public class Test {   
  3.   public static void main(String args[]) {   
  4.     Set<Short> s = new HashSet<Short>();   
  5.     for (Short i = 0; i < 100; i++) {   
  6.       s.add(i);   
  7.       s.remove(i - 1);   
  8.     }   
  9.     System.out.println(s.size());   
  10.   }   
  11. }  
JAVA中文站社区门户$VH"E#O'k'tUPc


I}Kk c
'RFz,pp7`N f运行结果为100
,V#\;[ d/Z$d
x\y+Iy分析: JAVA中文站社区门户;CRj,M ^ N%S
1 Set的remove调用的是删除一个对象remove(Object)
gQ`fRn7q!J}2 Short 和 Integer 进行比较时,是肯定不等的,虽然他们的数值相等。
{.b'a tS因为在equals时,先判断对象类型instanceof,他们类型不同,自然不等。 JAVA中文站社区门户:~?twdM G5T

k4g;Q? [F!HJAVA中文站社区门户4^'^7kj$lH%g(d
boolean remove(Object o) JAVA中文站社区门户0I,x2yw~j4n t
如果 set 中存在指定的元素,则将其移除(可选操作)。更确切地讲,如果此 set 中包含满足 (o==null ? e==null : o.equals(e)) 的元素 e,则移除它。如果此 set 包含指定的元素(或者此 set 由于调用而发生更改),则返回 true(一旦调用返回,则此 set 不再包含指定的元素)。
mg#H(|-Cf1`-b^dI
@$l5O9}*J;c5oo指定者:
&I7\z5k1Ou接口 Collection <E> 中的 remove
tZ/iN1I.l1K ?参数: JAVA中文站社区门户 @tbY_
o - 从 set 中移除的对象(如果存在) JAVA中文站社区门户6U"m t{bi
返回:
!I%x uD|8sc D如果此 set 包含指定的对象,则返回 true
qI|flF~"^抛出:
$W^P8w"W7slClassCastException - 如果指定元素的类型与此 set 不兼容(可选) JAVA中文站社区门户lR |tX#PU;\FHr
NullPointerException - 如果指定的元素为 null,并且此 set 不允许 null 元素(可选)
:Do#q/B \.?X ?TUnsupportedOperationException - 如果此 set 不支持 remove 操作 JAVA中文站社区门户w WN4Y9iu'j9?

q4h;w[LJAVA中文站社区门户;QI D ohkPW
remove的参数是Object,而lz的程序里写的是int值,所以没有删除掉。JAVA中文站社区门户QrDX;b%f

JAVA中文站社区门户G@8tk4pP

 

S%~!K smfx

TAG: Set set 删除 整数
 

评分:0

我来说两句

seccode