ArrayList 에서 원소 제거 시 제거된 인덱스를 채우기 위해 제거된 원소 뒤에 위치한 원소들이 한 칸 씩 당겨진다.
이 부분을 잘 생각해 원소 제거 시 인덱스를 적절히 조작해야 한다.
제거 후 반복문의 변수를 1 줄인다거나.. 제거하는 인덱스를 고정시켜놓는다거나..
ArrayList에서 원소를 제거할 때 원소의 인덱스를 기준으로 제거 할 수도 있고, 원소의 내용을 기준으로 제거 할 수 있다.
인덱스로 제거하는건 쉬우니 넘어가고, 원소의 내용을 기준으로 제거 할 때는 보통 리스트에 제네릭스 타입으로 객체 타입이 들어가 있을 경우일텐데, 같은지 판단하는 기준은 객체에 정의된 equals메서드이다.
class Marble{
int r, c;
Marble(int r, int c){
this.r = r;
this.c = c;
}
@Override
public boolean equals(Object o2){
Marble o3 = (Marble)o2;
if(r == o3.r && c == o3.c){
return true;
} else{
return false;
}
}
}
위의 예시처럼 비교하는 대상과 비교받는 대상의 r과 c가 같은 경우 true를 반환하게 하는 equals메서드를 오버라이딩해서 객체를 비교할 수 있도록 해 줬다.