Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从ArrayList中删除 import java.util; 类驱动程序{ 公共静态void main(字符串[]args){ ArrayList lstStr=新的ArrayList(); lsstStr.添加(“A”); lsstStr.添加(“B”); lsstStr.添加(“C”); for(Iterator it=lstStr.Iterator();it.hasNext();) { str=it.next(); 如果(str.equals(“B”){lstStr.remove(str);} } for(Iterator it=lstStr.Iterator();it.hasNext();) { System.out.println(it.next()); } } }_Java - Fatal编程技术网

无法从ArrayList中删除 import java.util; 类驱动程序{ 公共静态void main(字符串[]args){ ArrayList lstStr=新的ArrayList(); lsstStr.添加(“A”); lsstStr.添加(“B”); lsstStr.添加(“C”); for(Iterator it=lstStr.Iterator();it.hasNext();) { str=it.next(); 如果(str.equals(“B”){lstStr.remove(str);} } for(Iterator it=lstStr.Iterator();it.hasNext();) { System.out.println(it.next()); } } }

无法从ArrayList中删除 import java.util; 类驱动程序{ 公共静态void main(字符串[]args){ ArrayList lstStr=新的ArrayList(); lsstStr.添加(“A”); lsstStr.添加(“B”); lsstStr.添加(“C”); for(Iterator it=lstStr.Iterator();it.hasNext();) { str=it.next(); 如果(str.equals(“B”){lstStr.remove(str);} } for(Iterator it=lstStr.Iterator();it.hasNext();) { System.out.println(it.next()); } } },java,Java,这并不是从列表中删除“B”。为什么循环第二次运行时Str不等于“B”。为什么?试试这个:它将从列表中删除所有出现的“B”,而不包含任何循环 import java.util; class Driver{ public static void main(String[] args) { ArrayList<String> lstStr = new ArrayList<String>(); lsstStr.add("A"); l

这并不是从列表中删除“B”。为什么循环第二次运行时Str不等于“B”。为什么?

试试这个:它将从列表中删除所有出现的“B”,而不包含任何循环

 import java.util;  
 class Driver{

 public static void main(String[] args) {
      ArrayList<String> lstStr = new ArrayList<String>();
      lsstStr.add("A");
      lsstStr.add("B");
      lsstStr.add("C");
      for(Iterator<String> it = lstStr.Iterator(); it.hasNext();)
      {
          str = it.next();
          if(str.equals("B")){lstStr.remove(str);}
      }
      for(Iterator<String> it = lstStr.Iterator(); it.hasNext();)
      {
        System.out.println(it.next());
      }
 }
 }

您不能从正在迭代的集合中删除项,除非使用-您将得到一个
ConcurrentModificationException
。所以你的循环应该是这样的:

lstStr.removeAll(Collections.singleton("B"));
for(Iterator Iterator=list.Iterator();Iterator.hasNext();){ 字符串值=迭代器.next(); 如果(值等于(“B”)){ iterator.remove(); } }
当然,您应该使用
removeAll
仅删除具有特定值的所有项,但如果您需要基于某些条件而不是简单相等(例如“删除长度大于5的所有值”),则可以使用上述方法删除。另一个选项是收集要在新集合中删除的所有值,然后调用
removeAll

使用迭代器的
remove
方法。它将从集合中删除元素。

您的代码当前不会编译,因此不会显示任何内容。请先给出一个编译的示例。您很清楚rly没有运行您发布的代码,因此我们不知道实际运行的是什么代码。此代码将导致并发修改异常,因为从集合中删除元素后迭代器变得不可用。您没有告诉我们这一点,因此可能您甚至没有尝试过。import java.util.*;class Drive{public static void main(String[]args){ArrayList lstStr=new ArrayList();lstStr.add(“A”);lstStr.add(“R”);lstStr.add(“C”);String str;for(Iterator it=lstStr.Iterator();it.hasNext()){str=it.next();if(str.equals(“R”){lstStr.remove(it);}for(Iterator it=lstStr.Iterator();it.hasNext();){System.out.println(it.next());}}}}@Brometheus:请不要在这样的注释中添加代码-尤其是在没有任何指示的情况下。如果您想更改您的问题(您应该更改),使其编译,如果没有其他内容的话)你应该编辑问题,不要在答案上添加毫无意义的评论,也不要在单独的帖子中提出新问题。
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
    String value = iterator.next();
    if (value.equals("B")) {
        iterator.remove();
    }
}