Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java.ArrayList。方法删除()_Java_Arraylist - Fatal编程技术网

Java.ArrayList。方法删除()

Java.ArrayList。方法删除(),java,arraylist,Java,Arraylist,ArrayList有metodremove(int-index)和remove(objecto),所以 我尝试运行以下代码: 公共静态void main(字符串参数[]){ 我的问题: 第1行参数整数-为什么没有异常 第2行-参数字节-它不是int和not对象,为什么不再次异常 看一看javadocs.ArrayList.remove接受一个对象,整数是一个对象 [更新]忘记回答第二个问题 字节之所以有效,是因为我相信它要么被放入一个对象,要么被上溯到一个int作为索引。看一看javadocs.

ArrayList有metod
remove(int-index)
remove(objecto)
,所以

我尝试运行以下代码: 公共静态void main(字符串参数[]){

我的问题:

  • 第1行参数整数-为什么没有异常

  • 第2行-参数字节-它不是int和not对象,为什么不再次异常


  • 看一看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知道您的意思并为您转换它

  • 整数正在转换为对象,因此不会引发异常
  • 我估计字节正在转换为int,并被视为索引0,因此删除了第一个值
  • 整数正在转换为对象,因此不会引发异常
  • 我估计字节正在转换为int,并被视为索引0,因此删除了第一个值

  • #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