Streams旨在以更多功能的方式使用,最好将您的集合视为不可变的.
非流方式将是:
arrB.addAll(arrA);
arrA.clear();
但是您可能正在使用Streams,因此您可以过滤输入,因此更像是:
arrB.addAll(arrA.stream().filter(x -> whatever).toList())
然后从arrA中删除(感谢@Holgar的评论).
arrA.removeIf(x -> whatever)
如果您的谓词很昂贵,那么您可以进行分区:
Map lists = arrA.stream()
.collect(Collectors.partitioningBy(x -> whatever));
arrA = lists.get(false);
arrB = lists.get(true);
或列出更改:
List toMove = arrA.stream().filter(x->whatever).toList();
arrA.removeAll(toMove);
arrB.addAll(toMove);