Java 当我';我在for循环中使用这个ArrayList?
我需要在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
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);