2017-12-21 14 views
1

예를 들어,지도의지도 인지도를 만들고 싶습니다. 그래서 저는지도를 그렇게 선언했습니다. 결과 세트에서 JSON 객체를 만들고 싶습니다.Java에서 다차원 일반화 컬렉션을 올바르게 정의하는 방법은 무엇입니까?

Map<String, Map<String, Map<String, String>>> data = new LinkedHashMap<String, Map<String, Map<String, String>>>(); 

Map<String, Object> map = new LinkedHashMap<String, Object>(); 

그러나 나는 시간 그래서 나는지도를 원하는 얻을에 항목 하나를 넣고로 넣으 필요로하는 내가 정의 할 수 있습니다. 그런 다음 같은 다음과 같은 반복은 그래서 나는 것 검사되지 않은 경고를 남기는지도로 객체를 캐스팅합니다.

이 컬렉션 유형을 더 잘 선언 할 수있는 방법이 있습니까?

+0

된다. 'Triple'이라는 Apache Commons 클래스를 사용하여'Map , Object>'와 같은 것을 만들 수 있습니다. –

+0

GSON이 그런 종류의 맵을 작성할 수 있도록 JSON 오브젝트를 맵핑하려고한다는 것을 분명히 했어야합니다. – Sak6lab

+0

중첩 된 맵의 수가 동적입니까? 아니면 미리 알고 있습니까? –

답변

4

Google 구아바 MultiMap을 사용할 수 있지만 실제로는 새 개체를 만들고 단일 키에서 전체 데이터 컬렉션을 참조하는 것이 좋습니다. 나중에 요소에 액세스하는 방법 -

public class MyObjectData { 

    private String string1; 
    private Map<String, String> map; 

    // Getters and setters 

} 

그런 다음지도는 정말 당신이지도 수행 할 작업을 따라 Map<String, MyObjectData>

+2

Guava의 Multimap이 OP에 적합하지 않다고 생각합니다. OP는 키가 다른지도를 반환하는지도를 묻습니다. 구아바 멀티 맵은 중첩 된 맵과 동일하지 않습니다. Multimap은 키가 여러 값을 반환하는지도입니다. – DavidS

+1

이것이 질문에 어떻게 대답하는지 모르겠습니다. –

+0

이것은 키당 하나의 MyObjectData만을 허용합니다. – Sak6lab

관련 문제