我能够从列表中删除一个整数并将其存储在变量中。但是,使用String遇到麻烦。有没有一种方法可以删除列表中的字符串并将其存储? 下面的代码显示了如何使用Integers来实现:
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
Integer removedItem = list.remove(3);
我做了同样的事情,但是这次是用String做的,但是不起作用:
List<String> list = new ArrayList<String>();
list.add("Milk");
list.add("Eggs");
list.add("Butter");
String removedItem = list.remove("Butter");
是否可以存储已删除的内容(字符串)?我将不胜感激任何帮助!谢谢!
答案 0 :(得分:5)
您使List#remove(index)
和List#remove(Object)
感到困惑。第一个示例实际上不是删除数字3
,而是列表中的第4个(索引3)项并返回它是什么对象。如果对字符串列表进行了list.remove(3)
处理,则将返回第四个String对象。另外,如果您已经知道要删除的字符串,为什么还要再次存储它?:
String toRemove = "Butter";
list.remove(toRemove); //we already know it's "Butter"
答案 1 :(得分:1)
您实际上使用了两种不同的方法。
Collection.remove(Object o)尝试删除一个对象,如果删除了某个对象,则返回true(否则返回false)。在示例中,您将List<String>
使用了这种方法,如果将List<Integer>
替换为Integer removedItem = list.remove(3);
Integer removedItem = list.remove(new Integer(3));
进行此操作。
List.remove(int index)通过列表中的索引删除元素,并返回删除的元素。在Integer removedItem = list.remove(3);
中的第一个示例中,您实际上使用了该方法,因为您已经传递了一个int作为参数而不是object(在这种情况下为Integer)。
请记住,java集合中的索引从0开始,因此在尝试执行第一个示例时会得到NullPointerException。