在java中向新列表添加/复制对象

在java中向新列表添加/复制对象,java,Java,如果列表中的对象传递了一个条件,我想将它们复制到一个新列表中 我有一个名为“inschrijvingen”的数组列表,在这个数组列表中有“Speler”的对象 如果对象通过此methtod时为true: /** * * @param speler * @return */ private boolean magDeelnemen(Speler speler) { Collections.sort(inschrijving);

如果列表中的对象传递了一个条件,我想将它们复制到一个新列表中

我有一个名为“inschrijvingen”的数组列表,在这个数组列表中有“Speler”的对象

如果对象通过此methtod时为true:

/**
     *
     * @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被忽略“结果是您想要的列表,因此将其分配给一个变量