如何从列表中删除字符串并将其存储?

时间:2019-03-02 00:32:25

标签: java arraylist

我能够从列表中删除一个整数并将其存储在变量中。但是,使用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");

是否可以存储已删除的内容(字符串)?我将不胜感激任何帮助!谢谢!

2 个答案:

答案 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)

您实际上使用了两种不同的方法。

  1. Collection.remove(Object o)尝试删除一个对象,如果删除了某个对象,则返回true(否则返回false)。在示例中,您将List<String>使用了这种方法,如果将List<Integer>替换为Integer removedItem = list.remove(3);

  2. ,也可以对Integer removedItem = list.remove(new Integer(3));进行此操作。
  3. List.remove(int index)通过列表中的索引删除元素,并返回删除的元素。在Integer removedItem = list.remove(3);中的第一个示例中,您实际上使用了该方法,因为您已经传递了一个int作为参数而不是object(在这种情况下为Integer)。

请记住,java集合中的索引从0开始,因此在尝试执行第一个示例时会得到NullPointerException。