java如何复制ArrayList的一部分,更改并添加到同一ArrayList?
我将创建一个ArrayList
,向其中添加5个元素
// This is just an example
var rectangles = new ArrayList<>(20) {
{
add(new Rectangle(10, 10, Color.RED));
add(new Rectangle(20, 20, Color.GREEN));
add(new Rectangle(30, 30, Color.YELLOW));
add(new Rectangle(40, 40, Color.BLUE));
add(new Rectangle(50, 50, Color.PURPLE));
}
};
其余15个元素不需要编写,因为前五个元素只会重复,但每五个元素都有一个特定的属性集
最好在代码上看到它
for (var angle = 90; angle <= 270; angle += 90) {
var part_of_array = rectangles.subList(0, 5);
var rotate = new Rotate(angle, 500, 500);
part_of_array.stream().forEach(t -> ((Rectangle) t).getTransforms().add(rotate));
rectangles.addAll(part_of_array);
}
但代码很复杂,最重要的是,根本不起作用。因此,阵列有20个元素,但它们的角度都设置为90
请问如何正确书写
多谢各位
# 1 楼答案
我会使用流来完成这项工作:
备选案文1:
备选案文2:
假设矩形是正方形(高度=宽度),您还可以执行以下操作:
更新
备选案文1:
为了保持顺序,您需要使用比较器并反转流
备选案文2:
要保持顺序,需要使用树形图并反转流
# 2 楼答案
您需要从子列表创建一个新列表,以避免更改初始列表,并且需要克隆每个矩形: