Суть - что будет если элементов, которые удовлетворяют условию предиката в filter не будет?
Код дальше просто не выполнится, правильно я не понимаю?
public void checkBricksBump() {
bricks.stream()
.filter(brick -> brick.isIntersec(ball))
.limit(1)
.forEach(brick ->
{
bricks.remove(brick);
ball.setDirection(Math.random() * 360);
});
}
Валидатор говорит что поведение шарика после столкновения не правильно задаю, но мне кажется тут проблема кроется за моим недостаточным пониманием работы Stream Apipackage com.javarush.task.task24.task2413;
import static java.lang.Math.toRadians;
import static java.lang.Math.cos;
import static java.lang.Math.sin;
public class Ball extends BaseObject {
private double speed, direction, dx, dy;
private boolean isFrozen;
public Ball(double x, double y, double speed, double direction) {
super(x, y, 1);
this.speed = speed;
this.direction = direction;
this.isFrozen = true;
}
void start(){
isFrozen = false;
}
@Override
void draw(Canvas canvas) {
canvas.setPoint(x,y,'O');
}
@Override
void move() {
if(!isFrozen){
x+=dx;
y+=dy;
}
}
public void setDirection(double direction){
this.direction = direction;
dx = cos(toRadians(direction)) * speed;
dy = -sin(toRadians(direction)) * speed;
}
void checkRebound(int minx, int maxx, int miny, int maxy){
}
public double getSpeed() {
return speed;
}
public double getDirection() {
return direction;
}
public double getDx() {
return dx;
}
public double getDy() {
return dy;
}
}