2017-11-15 1 views
0

정말 이름을 쓰는 데 불편을 끼쳐 드려 죄송합니다. 그 질문이 어떻게되는지 보자. .....클래스가 포함 된 해시 맵 내 해시 맵 업데이트

자바에서 나는 다음과 같은 코드를 포함하는 book이라는 클래스를 가지고있다. 여기서 name은 서적 이름이고 hashMap 문자열은 비평가 이름이고 hashMap Integer는 비평가 점수입니다.

public class book { 

    private String name; 
    private HashMap<String, Integer> results = new HashMap<String, Integer>(); 
} 

다음 코드가 포함 된 bookRecord라는 또 다른 클래스가 있습니다.

private HashMap<Integer, Book> bookRecord = new HashMap<Integer, Book>(); 

나는 새 책을 입력하고 그 책을 bookRecord에 저장할 수있는 UI를 작성했습니다.

bookRecord의 정수는 책의 ID입니다. ID로 검색하고 책 이름을 반환하는 쿼리를 작성했습니다. 이제 새로운 평론과 점수를 사용할 수있게되면 책을 업데이트 할 수 있기를 바랍니다.

나는 각 루프마다 책 레코드에서 올바른 키를 찾은 다음 키가 각 루프에 대해 다른 것으로 발견되었지만 자신을 혼란스럽게합니다.

어떤 조언이 필요합니까? 당신이 results의 HashMap를 공개하고 같은 것을 달성 할 수

첫 번째 옵션 :

Book uBook = records.get(BOOK_ID_YOU_WANT_TO_UPDATE); 
if (uBook != null) { 
    uBook.results.put("New critic name", Critic_SCORE); 
} 

초 옵션은 results 개인을두고 있지만, 새로운 방법 addCriticScore(String criticName, Integer score)를 추가하는 것입니다

답변

2

당신은 두 가지 옵션이 있습니다 :

// In your class that updates the book 
Book uBook = records.get(BOOK_ID_YOU_WANT_TO_UPDATE); 

// In the Book class 
public void addCriticScore(String criticName, Integer score) { 
    this.results.put(criticName, score); 
} 

PS : 클래스의 이름을 변경하는 것을 잊지 마세요 book-Book. java에서 클래스 이름은 대문자입니다.