繁体   English   中英

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

[英]How do I remove a string from a list and store it?

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

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

您在混淆List#remove(index)List#remove(Object) 第一个示例实际上不是删除数字3 ,而是列表中的第4个(索引3)项并返回它是什么对象。 如果您对String列表进行了list.remove(3) ,则将获得第四个String对象。 另外,如果您已经知道要删除的字符串,为什么还要再次存储它?:

 String toRemove = "Butter";
 list.remove(toRemove); //we already know it's "Butter"

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM