Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Java 当我';我在for循环中使用这个ArrayList?_Java_Spring_Hibernate_Loops_Arraylist - Fatal编程技术网

Java 当我';我在for循环中使用这个ArrayList?

Java 当我';我在for循环中使用这个ArrayList?,java,spring,hibernate,loops,arraylist,Java,Spring,Hibernate,Loops,Arraylist,我需要在for循环中使用的ArrayList中添加一些对象。代码如下: List<Bulto> bultosHijos = bultoDAO.findChilds(idBulto); List<Bulto> bultosMasProfundos = new ArrayList(); for (Bulto bulto : bultosHijos) { List<Bulto> bultosN

我需要在for循环中使用的ArrayList中添加一些对象。代码如下:

        List<Bulto> bultosHijos = bultoDAO.findChilds(idBulto);
        List<Bulto> bultosMasProfundos = new ArrayList();

        for (Bulto bulto : bultosHijos) {
            List<Bulto> bultosNietos = bultoDAO.findChilds(bulto.getIdBulto());

            if (!bultosNietos.isEmpty()) {
                bultosHijos.addAll(bultosHijos.size(), bultosNietos);
            } else {
                bultosMasProfundos.add(bulto);
            }
        }
用于在迭代arrayList时并发添加或删除。当您尝试使用forloop从列表中添加或删除对象时,它肯定会抛出
当前修改异常
。因此,您无法修改列表。通过使用
列表迭代器
可以
从列表中添加或删除对象

以下是示例代码:

List<String> list1=new ArrayList<String>();
list1.add("a");
list1.add("b");
// c is missing in the list
list1.add("d");
list1.add("e");
ListIterator<String> it=list1.listIterator();
while(it.hasNext()){
    if(it.next().equals("b")){
        // add c in the list after b
        it.add("c");
    }
}
System.out.println(Arrays.toString(list1.toArray(new String[]{})));
用于在迭代arrayList时并发添加或删除。当您尝试使用forloop从列表中添加或删除对象时,它肯定会抛出
当前修改异常
。因此,您无法修改列表。通过使用
列表迭代器
可以
从列表中添加或删除对象

以下是示例代码:

List<String> list1=new ArrayList<String>();
list1.add("a");
list1.add("b");
// c is missing in the list
list1.add("d");
list1.add("e");
ListIterator<String> it=list1.listIterator();
while(it.hasNext()){
    if(it.next().equals("b")){
        // add c in the list after b
        it.add("c");
    }
}
System.out.println(Arrays.toString(list1.toArray(new String[]{})));

如果要对ArrayList进行任何修改,则在遍历ArrayList时,必须通过迭代器进行循环,因为常规的for循环对您没有帮助

迭代器iter=myArrayList.Iterator(); while(iter.hasNext()){ String str=iter.next(); 如果(某些条件) iter.remove(); }
当在ArrayList中循环时,如果要对其进行任何修改,则必须通过迭代器进行循环,因为常规的for循环对您没有帮助

迭代器iter=myArrayList.Iterator(); while(iter.hasNext()){ String str=iter.next(); 如果(某些条件) iter.remove(); }
数组列表上循环时,只允许使用迭代器将其添加到
数组列表中:

ListIterator<String> iterator = bultosHijos.iterator();
while (iterator.hasNext()) {
    String str = iterator.next();
    // now if we want to...
    iterator.add("some other string");
}

任何其他修改列表的方法都会给出一个
ConcurrentModificationException

唯一允许您在循环时添加到
ArrayList
的方法是使用迭代器:

ListIterator<String> iterator = bultosHijos.iterator();
while (iterator.hasNext()) {
    String str = iterator.next();
    // now if we want to...
    iterator.add("some other string");
}

任何其他修改列表的方法都会给出一个
ConcurrentModificationException

您应该使用Concurent软件包。使用

您应该使用Concurent软件包。使用

我还添加了示例代码以使其更清晰。我还添加了示例代码以使其更清晰。您可以使用
ListIterator
进行迭代。您可以使用
ListIterator
进行迭代。
ListIterator<String> iterator = bultosHijos.iterator();
while (iterator.hasNext()) {
    String str = iterator.next();
    // now if we want to...
    iterator.add("some other string");
}
for (String s: bultosNietos)
    iterator.add(s);