在java中向新列表添加/复制对象
如果列表中的对象传递了一个条件,我想将它们复制到一个新列表中 我有一个名为“inschrijvingen”的数组列表,在这个数组列表中有“Speler”的对象 如果对象通过此methtod时为true:在java中向新列表添加/复制对象,java,Java,如果列表中的对象传递了一个条件,我想将它们复制到一个新列表中 我有一个名为“inschrijvingen”的数组列表,在这个数组列表中有“Speler”的对象 如果对象通过此methtod时为true: /** * * @param speler * @return */ private boolean magDeelnemen(Speler speler) { Collections.sort(inschrijving);
/**
*
* @param speler
* @return
*/
private boolean magDeelnemen(Speler speler) {
Collections.sort(inschrijving);
return speler.getHandicap() <= minNiveau && inschrijving.size() < maxSpelers;
}
我希望两个arraylist中都有对象,但当我运行此代码时,我得到:
Exception in thread "main" java.util.ConcurrentModificationException
您正在循环使用
this.inschrijving
并在循环中调用方法magDeelnemen
。但是,在该方法中,您正在对inschrijving
进行排序
你不能修改你正在循环的集合,我不明白为什么必须用那种方法对它进行排序,所以最好的解决方案就是删除
集合。sort(inschrijing)
你正在循环this.inschrijing
并在循环中调用方法Magdeelmen
。但是,在该方法中,您正在对inschrijving
进行排序
你不能修改你正在循环的集合,我也不明白为什么要用那种方法对它进行排序,所以最好的解决方案就是删除
集合。排序(inschrijing)
删除集合。排序(inschrijing)
来自Magdeelmen
。
如果需要对列表进行排序,请在isSpeller循环之前或之后进行排序。在您的例子中,您在迭代时修改列表,这就是为什么会出现异常,并在每次迭代时进行排序,这会浪费cpu周期。
此外,您还可以使用stream创建相同的行为:
this.inschrijving.stream().sorted().filter(this::magDeelnemen).collect(Collectors.toList());
从
Magdeelmen
中删除集合.排序(INSCHRIJING)
。
如果需要对列表进行排序,请在isSpeller循环之前或之后进行排序。在您的例子中,您在迭代时修改列表,这就是为什么会出现异常,并在每次迭代时进行排序,这会浪费cpu周期。
此外,您还可以使用stream创建相同的行为:
this.inschrijving.stream().sorted().filter(this::magDeelnemen).collect(Collectors.toList());
不是从Magdeelmen移除而是替换为isSpeler()中的第一个字符串,谢谢!是的,我把集合放错了。排序方法不对,谢谢你看!不是从Magdeelmen移除而是替换为isSpeler()中的第一个字符串,谢谢!是的,我把集合放错了。排序方法不对,谢谢你看!您好,谢谢您的输入,当我尝试de isSpeler()方法中的流时,我得到“无法解析列表中排序的方法。请在排序之前尝试调用列表中的流()”现在没有错误,谢谢,但现在它显示on.collect“stream.collect的结果被忽略“结果是您想要的列表,因此将其分配给一个变量HI感谢您的输入,当我尝试在de isSpeler()方法中使用stream时,我得到”无法解析在列表中排序的方法。请在排序之前尝试调用列表中的stream(),现在没有错误,谢谢,但现在它显示on.collect“stream.collect的resuslt被忽略“结果是您想要的列表,因此将其分配给一个变量