Java
Map의 Value로 Class ? 𖦹 ˍ 𖦹
우 석
2024. 1. 11. 20:21
프로젝트를 진행 중에 Map의 값 안에 더 많은 내용을 넣고 싶어졌다.
Map<String, Score> map = new HashMap()<>; 과 같이 Map의 값을 클래스로 넣을 수 있는지 공부해 보았다.
<코드 설명>
Main:
Map<String, Score> map = new HashMap()<>; 를 사용하여 값으로 클래스인 Score 객체를 가지는 Map을 생성
Score 객체를 생성하고, map.put() 메서드를 사용하여 키와 Score 객체를 추가
그리고 map.get() 메서드를 사용하여 특정 키에 해당하는 Score 객체를 가져와서 필요한 정보를 출력
Score 클래스:
Score 클래스는 필드 name과 score를 가지며, 추가적인 데이터를 담기 위한 Map<String, String> 변수인 additionalData도 가진다. 또한 setAdditionalData() 메서드를 사용하여 additionalData 값을 설정하고, getAdditionalData() 메서드를 사용하여 additionalData 값을 가져와서 출력한다.
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// Map 생성
Map<String, Score> map = new HashMap<>();
// Score 객체 생성
Score score1 = new Score("John", 90);
Score score2 = new Score("Emily", 85);
// Map에 Score 객체 추가
map.put("student1", score1);
map.put("student2", score2);
// Map에서 Score 객체 가져오기
Score retrievedScore = map.get("student1");
System.out.println("이름: " + retrievedScore.getName());
System.out.println("점수: " + retrievedScore.getScore());
// Score 클래스에 또 다른 Map 추가하기
Map<String, String> additionalData = new HashMap<>();
additionalData.put("학교", "ABC 학교");
additionalData.put("학년", "3학년");
retrievedScore.setAdditionalData(additionalData);
// 추가된 Map 값 가져오기
Map<String, String> retrievedAdditionalData = retrievedScore.getAdditionalData();
System.out.println("학교: " + retrievedAdditionalData.get("학교"));
System.out.println("학년: " + retrievedAdditionalData.get("학년"));
}
}
class Score {
private String name;
private int score;
private Map<String, String> additionalData;
public Score(String name, int score) {
this.name = name;
this.score = score;
this.additionalData = new HashMap<>();
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
public Map<String, String> getAdditionalData() {
return additionalData;
}
public void setAdditionalData(Map<String, String> additionalData) {
this.additionalData = additionalData;
}
}
회고.
프로젝트 중 Map의 value로 클래스를 넣는 코드를 우연히 작성했습니다. 처음엔 이게 되네? 왜 되는 거지? 하며 이해하는데 시간이 많이 걸렸습니다. 모르는 것을 찾아서 공부하는 데 시간과 노력이 많이 들었습니다. 하지만 그만큼 확실하게 이해할 수 있었습니다.