📝관련 실습: 객체배열관리_팀과제 (MonsterManager.java)
public class MonsterManager {
private static MonsterManager instance = new MonsterManager();
public static MonsterManager getInstance() {
return instance;
}
private Monster[] monsters;
private int size;
public int getSize() {
return this.size;
}
private MonsterManager() {
this.monsters = new Monster[100];
this.size = 0;
}
// -------------------------------------------------------------
// 등록
public void addMonster(Monster monster) {
this.monsters[this.size++] = monster;
}
// 삭제
public void removeMonster(int id) {
for(int i =0; i<size; i++) {
if(id == monsters[i].getId()) {
for(int j=i; j<size-1; j++) {
monsters[j] = monsters[j+1];
}
this.size--;
break;
}
}
}
// 캐릭터 목록 관련
public Monster[] getList() {
Monster[] tmp = new Monster[size];
for(int i =0; i<size; i++) {
tmp[i] = monsters[i];
}
return tmp;
}
//조회
//이름으로 조회
public Monster[] searchByName (String keyword) {
int cnt = 0;
for(int i=0; i < size; i++) {
if(monsters[i].getName().contains(keyword)) {
cnt++;
}
}
Monster[] tmp = new Monster[cnt];
int idx = 0;
for(int i=0; i < size; i++) {
if(monsters[i].getName().contains(keyword)) {
tmp[idx++] = monsters[i];
}
}
return tmp;
}
//공격력으로 조회
public Monster[] searchByAttack (int min, int max) {
int cnt = 0;
for(int i=0; i < size; i++) {
if(monsters[i].getAttack() >= min && monsters[i].getAttack()<= max) {
cnt++;
}
}
Monster[] tmp = new Monster[cnt];
int idx = 0;
for(int i=0; i < size; i++) {
if(monsters[i].getAttack() >= min && monsters[i].getAttack()<= max) {
tmp[idx++] = monsters[i];
}
}
return tmp;
}
} //end class
구현 객체들을 배열로 관리하면 인덱스로 표현되므로 대입이나 제어문에서 활용하기 매우 쉬워 많은 혜택을 본다.