조건에 따라 true혹은 false값을 넣어주는 boolean형 변수
Class : 도서리스트를 배열로 유지하며 관리하는 클래스
//도서 정보 삭제
public void remove(String isbn){
for(int i=0; i<size; i++) {
if(books[i].getIsbn() == isbn) {
books[i] = null;
}
}
}
//리스트 가져오기
public Book[] getList() {
Book[] result = new Book[size];
for (int i=0; i<size; i++) {
result[i] = books[i];
} return result;
}
problem
- flag 변수를 이용해서 배열 요소가 삭제되면 왼쪽으로 요소를 옮김
- Arrays.copyof 를 이용해서 books 배열을 복사해서 옮김
public void remove(String isbn) {
int idx = 0;
//flag 변수 생성
boolean flag = false;
//books 배열에서 삭제할 isbn이 들어있는 인덱스를 찾아냄
//flag는 true가 됨 & 해당 index 정보를 삭제함
for (int i = 0; i < size; i++) {
if (books[i].getIsbn().equals(isbn)) {
flag = true;
idx = i;
books[i] = null;
}
}
//flag == true 라면 (삭제할 요소가 있다면)
//해당 index의 요소는 null값으로 삭제 되었으므로
//자리가 비어있는 index 바로 다음 index 요소를 왼쪽으로 옮겨줌
//왼쪽으로 옮겨가면 뒤에 모든 요소도 옮겨줘야하고, 결국 제일 마지막 index가 비게 되므로
//사이즈를 하나 삭제해줌
if(flag) {
for (int i = idx; i < size; i++) {
books[i] = books[i+1];
}
books[size] = null;
size--;
}
}
// 등록된 사용자 리스트 반환
public Book[] getList() {
return Arrays.copyOf(books, size);
}