当前位置: 首页 > 知识库问答 >
问题:

如何在java中移除字符串列表中的元素?

齐向笛
2023-03-14

正如你所看到的,我想从我的SplitedIgrediants列表中删除或删除等于我的入口的入口,我已经尝试过删除或删除,但似乎出现了一个错误。那么我该如何从JAVA的列表中删除这个成分元素呢。

        String ingredientid = request.getParameter("id");
        DbHandler dbsplt = new DbHandler();
        for (String ingrediant : SplitedIngrediants) {
            if (ingrediant.equals(ingredientid)) {
                //HERE REMOVE THE ingredient from SplitedIngrediants list
            }

共有2个答案

鲜于凯康
2023-03-14

试试这个:

String ingredientid = request.getParameter("id");
SplitedIngrediants.removeAll(Collections.singleton(ingredientid));

示例代码:

public static void main(String args[]) {
        List<String> l = new ArrayList<String>();
        l.add("first");
        l.add("first");
        l.add("second");

        String ingredientid = "first";

        l.removeAll(Collections.singleton(ingredientid));

        System.out.println(l);
    }

如果SplitedIngrediants是一个字符串数组,请尝试:

public static void main(String args[]) {
    String[] SplitedIngrediants = new String[] { "first", "first", "second" };

    String ingredientid = "first";

    List<String> NewSplitedIngrediants = new ArrayList<>();
    for (String ingrediant : SplitedIngrediants) {
        if (!ingrediant.equals(ingredientid)) {
            NewSplitedIngrediants.add(ingrediant);
        }
    }
    SplitedIngrediants = new String[NewSplitedIngrediants.size()];
    SplitedIngrediants = NewSplitedIngrediants.toArray(SplitedIngrediants);
    for (String ingrediant : SplitedIngrediants) {
        System.out.println(ingrediant);
    }

}
段良弼
2023-03-14

除非您手动声明迭代器并使用iterator.remove(),否则您不能在迭代时从集合中删除元素(您将获得一些ConprestModificationException)。

例子:

List<Integer> list = new ArrayList<Integer>();

list.add(3);
list.add(4);
list.add(5);

Iterator<Integer> it = list.iterator();
Integer current;
while (it.hasNext()) {
    current = it.next();
    if(current.equals(4)) {
        it.remove();
    }
}

输出:

[3, 5]

这背后的原因是“前切”构造在内部创建了一个迭代器。迭代器的目的是确保可迭代的每个元素只访问一次。因此,如果在不使用迭代器方法的情况下从可迭代对象中添加/删除元素,则迭代器无法再完成其任务。

第二种选择:在列表上迭代的时候,列一个要删除的条目的列表,迭代完之后删除。

 类似资料:
  • 我有一个由DB中称为Notes的对象填充的列表。对象的数量不同。我需要比较字符串变量,如果字符串相等,执行某个操作。如何完成这一点? 到目前为止,我的代码以NullPoInterExeption结尾:

  • 本文向大家介绍如何从Python的字符串列表中删除空字符串?,包括了如何从Python的字符串列表中删除空字符串?的使用技巧和注意事项,需要的朋友参考一下 您可以使用过滤器过滤掉空字符串。filter的第一个参数是lambda,它将告诉您字符串是否为空。您可以将此lambda传递为None,bool,len或检查字符串是否为空的函数。您可以通过以下几种方式进行检查: 请单击下面的链接以查看带有简单

  • 问题内容: 如果我有一个字符串列表,例如: 为了摆脱每个字符串中的所有s,我该怎么办?我尝试在for循环中使用或,但是它无法像正常字符串(不在列表中)那样工作。有人有建议吗? 问题答案: 尝试这个:

  • 问题内容: 因此,从字符串列表开始,如下所示 string_list = [“休息”,“休息”,“看”,“看”,“它”,“吐”] 我想从列表中删除作为另一个元素的子字符串的任何元素,例如给出结果… string_list = [“休息”,“看上去”,“吐”] 我有一些实现此目的的代码,但是它很丑陋,而且可能不必要地复杂。有没有一种简单的方法可以在Python中做到这一点? 问题答案: 第一个构建块

  • 我创建了一个函数来删除数组中的一个特定元素,但正在努力解决的问题是,当我们从s.next()中获得要删除的元素的值时,它不是删除,而是当我们已经为它初始化了一个值时,它是删除

  • 问题内容: 我有一个清单 我正在尝试删除其超字符串已经在列表中的字符串。在这种情况下,结果应为: 我已经写了代码: 但它似乎不起作用。我读过,我们无法在列表上进行迭代时将其删除。因此,副本,而这是我的原始列表。 问题答案: l=[‘abc’,’abcdef’,’def’,’defdef’,’polopolo’] print [j for i, j in enumerate(l) if all(j