반응형
포켓몬GO
PokeBag 클래스
(1) private final 자료형 pokemons = new 자료형();
HashMap 강의에서 만들었던 PokeDex에서는 한 마리의 마릴 인스턴스만 담을 수 있었죠? PokeBag에서는 마릴이라는 key 하나에 여러 마리의 마릴 인스턴스를 담을 수 있습니다.
이 상황에 적합한 자료형을 생각해 봅시다.
(2) public ArrayList<Pokemon> getPokemons(String name)
name 이름을 갖고 있는 포켓몬을 모두 가져오는 메소드입니다.
(3) public void add(Pokemon pokemon)
과정 (1)에서 구현한 pokemons에 Pokemon을 넣는 메소드입니다.
(4) public Pokemon getStrongest(String name)
name 이름의 포켓몬 중 가장 강한(cp가 가장 큰) 포켓몬을 가져오는 메소드입니다.
(5) public Pokemon getStrongest()
내가 가진 모든 포켓몬 중 가장 강한 포켓몬을 가져오는 메소드입니다. 내부적으로 (4)번 메소드를 호출하도록 구현해보세요.
마릴(816)
라프라스(1822)
null
package Ex0509;
import java.util.ArrayList;
import java.util.HashMap;
public class PokeBag {
private final HashMap<String, ArrayList<Pokemon>> pokemons = new HashMap<>();
public ArrayList<Pokemon> getPokemons(String name) {
return pokemons.get(name);
}
public void add(Pokemon pokemon) {
String name = pokemon.name;
// 해당하는 ArrayList가 없으면 생성
if (getPokemons(name) == null) {
pokemons.put(name, new ArrayList<Pokemon>());
}
getPokemons(name).add(pokemon);
}
public Pokemon getStrongest(String name) {
// name 이름의 포켓몬 목록
ArrayList<Pokemon> pokemonList = getPokemons(name);
if (pokemonList == null) {
return null;
}
// return할 포켓몬(가장 센 포켓몬)을 담을 변수.
Pokemon strongest = null;
for (Pokemon pokemon : getPokemons(name)) {
if (strongest == null || pokemon.cp > strongest.cp) {
strongest = pokemon;
}
}
return strongest;
}
public Pokemon getStrongest() {
// return할 포켓몬(가장 센 포켓몬)을 담을 변수.
Pokemon strongest = null;
// HashMap 전체를 탐색 (keySet을 통해 얻은 key로 탐색)
for (String key : pokemons.keySet()) {
// key에 해당하는 가장 센 포켓몬을 가져오기
Pokemon p = getStrongest(key);
// strongest를 가장 센 포켓몬으로 교체
if (strongest == null || p.cp > strongest.cp) {
strongest = p;
}
}
return strongest;
}
}
본 내용은 Codeit의 '자바 기초' 강의를
참고하여 작성한 내용입니다.
반응형
'Languages > Java' 카테고리의 다른 글
[자바 객체 지향 프로그래밍] 06. 기말고사: 자바 실무 프로젝트 (0) | 2021.03.04 |
---|---|
[자바 객체 지향 프로그래밍] 06. 기말고사: 자바 실무 프로젝트 (0) | 2021.03.04 |
[자바 객체 지향 프로그래밍] 05. 자바, 더 간편하게! (0) | 2021.03.03 |
[자바 객체 지향 프로그래밍] 05. 자바, 더 간편하게! (0) | 2021.03.03 |
[자바 객체 지향 프로그래밍] 04. 자바, 더 정확하게! (0) | 2021.03.02 |