Java 使用remove(对象)从LinkedList中删除整数

Java 使用remove(对象)从LinkedList中删除整数,java,collections,linked-list,doubly-linked-list,Java,Collections,Linked List,Doubly Linked List,我想使用items值从Integer LinkedList中删除一个项。但是我得到的是ArrayIndexOutOfBoundException public static void main(String[] args) { List<Integer> list = new LinkedList<Integer>(); list.add(10); list.add(20); list.add(5); list.remove(1

我想使用items值从Integer LinkedList中删除一个项。但是我得到的是ArrayIndexOutOfBoundException

public static void main(String[] args) {

    List<Integer> list = new LinkedList<Integer>();
    list.add(10);
    list.add(20);
    list.add(5);

    list.remove(10);
    System.out.println("Size: " + list.size());

    for (Integer integer : list) {
        System.out.println(integer);
    }
}

LinkedList将我传递的数字视为索引而不是值。因此,如何在不使用索引号的情况下将项目10作为值删除。

您应该使用接受整数对象的版本:

list.remove(Integer.valueOf(10)));
,而不是将索引作为int数据类型的版本:

list.remove(10);

您应该使用接受整数对象的版本:

list.remove(Integer.valueOf(10)));
,而不是将索引作为int数据类型的版本:

list.remove(10);
如果查看remove,则需要删除索引、对象或对象本身,或者不需要参数

除去 检索并删除此列表的头一个元素

去除指数 删除此列表中指定位置的元素

移除对象 从该列表中删除指定元素的第一个匹配项(如果存在)

在您的情况下,如果传递int,它将使用该方法删除该索引处的对象,并且它应为0,因为它是第一个元素:

public static void main(String[] args) {

    List<Integer> list = new LinkedList<Integer>();
    list.add(10);
    list.add(20);
    list.add(5);

    list.remove(0);
    System.out.println("Size: " + list.size());

    for (Integer integer : list) {
        System.out.println(integer);
    }
}
如果要删除某个值,在本例中应传递一个对象,而不是。

如果查看remove,则需要索引、要删除的对象或对象本身,或者不需要参数

除去 检索并删除此列表的头一个元素

去除指数 删除此列表中指定位置的元素

移除对象 从该列表中删除指定元素的第一个匹配项(如果存在)

在您的情况下,如果传递int,它将使用该方法删除该索引处的对象,并且它应为0,因为它是第一个元素:

public static void main(String[] args) {

    List<Integer> list = new LinkedList<Integer>();
    list.add(10);
    list.add(20);
    list.add(5);

    list.remove(0);
    System.out.println("Size: " + list.size());

    for (Integer integer : list) {
        System.out.println(integer);
    }
}

如果要删除一个值,在这种情况下,您应该传递一个对象,而不是。

而不是强制创建一个新的整数对象,您应该使用自动装箱,即list.removeInteger10;或list.removeinterger.valueOf10;。您应该使用自动装箱,即list.removeinterger10,而不是强制创建新的整数对象;或list.removeinterger.valueOf10;。您的问题…使用removeObject已经指向它,list.removeObject10;您的问题…使用removeObject已经指向它,list.removeObject10;非常感谢。我现在明白了,谢谢。我现在明白了。