[英]Java.ArrayList. method remove()
ArrayList具有方法remove(int index)
和remove(Object o)
,所以
我尝试运行以下代码:public static void main(String args []){
ArrayList<Long>ar=new ArrayList<Long>();
ar.add(11L);
ar.add(22L);
ar.add(33L);
ar.remove(new Integer(33)); // 1
byte b =0;
ar.remove(b); //2
for(Iterator i=ar.iterator(); i.hasNext();)
{
System.out.println(i.next());
}
}
结果我有:
22
33
我的问题:
第1行中的参数Integer-为什么我们没有异常?
第2行-paramenet字节-它不是int而不是Object,为什么不再次出现Exception?
remove(..)
方法不是通用的。 它接受任何对象,并且不检查其类。 与集合中的元素相比, equals(..)
方法应返回true才能删除元素。 没有删除元素33,因为Long.equals(..)
如果另一个对象不是instanceof Long
则返回false
byte
被解释为索引。
因为这两个都转换为正确的类型。 在第一个中,它是remove(Object o),其中o是Integer(33)。 但是它在您的数组列表中找不到该对象,因此根据定义它返回false:
返回:如果此列表包含指定的元素,则返回true。
第二个可能被转换为一个int,因此您要删除第一个索引。
1)您传递的对象不在列表中。 所以什么也没发生。
2)它不是传递的对象,而是索引(0)。 因此,删除了arraylist中的第一个元素。
Java内置了自动装箱功能,可节省您进行各种数字表示形式转换的时间。 没错,因为Java弄清楚了您的意思并将其转换为您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.