Java.ArrayList。方法删除()
ArrayList有metodJava.ArrayList。方法删除(),java,arraylist,Java,Arraylist,ArrayList有metodremove(int-index)和remove(objecto),所以 我尝试运行以下代码: 公共静态void main(字符串参数[]){ 我的问题: 第1行参数整数-为什么没有异常 第2行-参数字节-它不是int和not对象,为什么不再次异常 看一看javadocs.ArrayList.remove接受一个对象,整数是一个对象 [更新]忘记回答第二个问题 字节之所以有效,是因为我相信它要么被放入一个对象,要么被上溯到一个int作为索引。看一看javadocs.
remove(int-index)
和remove(objecto)
,所以
我尝试运行以下代码:
公共静态void main(字符串参数[]){
我的问题:
看一看javadocs.ArrayList.remove接受一个对象,整数是一个对象 [更新]忘记回答第二个问题
字节之所以有效,是因为我相信它要么被放入一个对象,要么被上溯到一个int作为索引。看一看javadocs.ArrayList.remove接受一个对象,整数是一个对象 [更新]忘记回答第二个问题 字节之所以有效,是因为我相信它要么被放入一个对象,要么被上溯到一个int作为索引。1)你传递了一个不在列表中的对象,所以什么也没有发生 2) 传递的不是对象,而是索引(0)。因此,将删除arraylist中的第一个元素。1)传递的对象不在列表中。因此不会发生任何事情 2) 传递的不是对象,而是索引(0)。因此arraylist中的第一个元素被删除
remove(…)
方法不是泛型的。它接受任何对象,不检查其类。删除元素所需的条件是equals(…)
方法在与集合中的元素进行比较时返回true。元素33不会被删除,因为Long.equals(…)
如果另一个对象不是长实例,则返回false
字节
被解释为索引remove(…)
方法不是泛型的。它接受任何对象,不检查其类。删除元素所需的条件是equals(…)
方法在与集合中的元素进行比较时返回true。元素33不会被删除,因为Long.equals(…)
如果另一个对象不是长实例,则返回false
字节
被解释为索引因为这两个类型都被转换为正确的类型。在第一个类型中,它是remove(Object o),其中o是整数(33)。但它在arraylist中找不到该对象,因此根据定义返回false: 返回: 如果此列表包含指定的元素,则为true
第二个可能被强制转换为int,因此您要删除第一个索引。因为这两个索引都被强制转换为正确的类型。在第一个索引中,它是remove(Object o),其中o是整数(33)。但它在arraylist中找不到该对象,因此根据定义返回false: 返回: 如果此列表包含指定的元素,则为true
第二个可能会转换为int,因此您要删除第一个索引。Java内置了自动装箱,以节省您键入各种数字表示的时间。没有错误,因为Java会理解您的意思并将其转换为int。Java内置了自动装箱,以节省您键入各种数字表示的时间没有错误,因为Java知道您的意思并为您转换它
#1错误:调用remove(Object),如果元素不是列表的一部分,则不会执行任何操作。如果索引超出边界,remove(int)会引发异常。仍然错误。
nothing Actions
不完全正确,它返回false.ok。但列表不会发生任何操作。这就是问题所在。#1错误:remove(Object)调用,如果元素不是列表的一部分,则不会执行任何操作。remove(int)如果索引超出范围,则引发异常。仍然错误。未发生任何事情
不太正确,它返回false.ok。但列表未发生任何事情。这就是问题所在。因此,如果我正确理解第1行,我们会遇到这种情况:在列表中,我们有Long,因此当我们尝试运行remove方法时,我们有以下情况:if(Integer.equals)(Long))返回false,我们的列表没有被修改。next.byte->int.这是正确的。但是如果我这样做:Long b=4654654654654l;Long to int-不可能。所以,如果我正确理解第1行,我们会遇到这种情况:在我们的列表中,我们有Long,所以当我们尝试运行remove方法时,我们有这样一个:if(Integer.equals(Long))返回false,我们的列表未修改。next.byte->int.正确。但如果我这样做:long b=4654654654654l;long to int-不可能。事实上,问题第2部分的正确答案是Java将byte
primative自动装箱为Java.lang.byte
对象并调用ArrayList.remove(对象)
.57:aload_1 58:iload_2 59:invokevirtual#15;//方法java/util/ArrayList.remove:(I)Ljava/lang/Object;这是我最初的答案。但事实并非如此。事实上,问题第2部分的正确答案是Java将byte
primative自动装箱为Java.lang.byte
对象,并调用ArrayList.remove(Object)
.57:aload_1 58:iload_2 59:invokevirtual#15;//方法java/util/ArrayList.remove:(I)Ljava/lang/Object;这是我最初的答案。但事实并非如此。
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