2012-09-10 3 views
2

1 개의 키에 3 개의 값을 저장하고 싶습니다. 해시 맵은 키 1 개, 값 1 개만 보유 할 수 있으므로 사용할 수 없습니다. 그래서 다른 어떤 방법으로 Value A/B/C의 한 키를 가져야합니다.하나의 키로 많은 값을 저장하는 방법

키 : 문자열

값 : 문자열/문자열/사용 중 ArrayList를이/키의 값으로 설정 될 수있는 방법의

+1

을 유지하기 (비 표준 API) Multimap과의 I 인해 기록을 통해 입력 잃고 여기 추천하지 않는 것이 구현 ... (하지만 뭔가가있다 마음) –

+0

정말 HashMaps/Maps/List에 새로운 기능입니다. 그래서 솔루션을 이해하는 것은 꽤 어렵습니다. 나는 그 모범을 이해하고 시험하려고 노력한다. 하지만 나는 해결책을 얻지 못한다. 그래서 전체 작동 예제가 있다면. 나는 거기에서 배울 수 있고 거기에서 일할 수 있습니다. – user1621988

답변

11

3 개의 값을 보유 할 객체를 만들고 새로운 객체는 키 - 값 쌍의 값입니다.

class TripleValue { 
    String A; 
    String B; 
    int C; 

    public TripleValue(String a, String b, int c) { 
     A = a; 
     B = b; 
     C = c; 
    } 
} 

public static void main() { 
    Map<String, TripleValue> myMap = new HashMap<String, TripleValue>(); 
    myMap.put("SomeKey", new TripleValue("String1", "String2", 10)); 

} 
+2

'class Triple {String A; 문자열 B; int C; } ' – oldrinb

+1

값 목록이 동적 인 경우이 솔루션은 우아하지 않을 수 있습니다. – kosa

+3

@ Nambari True이지만 OP는 String/String/int 값을 나열합니다 –

5

하나의 지능.

예 :

각 키에 대한 값의 수를 알고있는 경우 또 다른 방법은 항상 동일하려고한다
List myTempList = new ArrayList(); 
myTempList.add("Hi"); 
myTempList.add("Hello"); 
myTempList.add("How are you"); 

myMap.key("key", myTempList); 

, 당신은 그 객체에 홀더 객체와 설정 값을 생성하고 그것을 넣을 수 있습니다 지도에서.

+0

항상 3 개의 원소를 포함하는 이기종 'List'를 사용하는 것은 좋은 생각이 아닙니다. – oldrinb

+0

@oldrinb : 그렇습니다. 내 이해는 값이 미리 정의되어 있지 않습니다. 가능한 해결책을 추가하여 답변을 업데이트했습니다. 예 : – kosa

0

가 다음 목록은 키의 존재 여부를 확인해야합니다

Map<Integer, List<yourObject>> m = new HashMap<>(); 

을 시도해보십시오 여기

은 샘플 구현입니다. 그렇다면 목록에 추가하십시오. 다른 ArrayList에를 만들고 예를 들어 그것을

을 추가

public add(String key, MyObj myobj){ 
    if (this.contains(key)) { 
     this.get(key).add(myObj); 
    }else { 
     List<MyObject> list = new ArrayList<MyObject>(); 
     list.add(myObj); 
     m.put(key, list); 
    } 
} 
+0

선언 된 타입'm' 다음에'>'가 없습니다. 또한 자바 7에서, 컴파일러가 생성 된'HashMap '의 매개 변수화 된 타입, 즉'new HashMap <>()' – oldrinb

+0

예 좋은 포인트 @oldrib를 유추하도록 허용 할 수 있습니다. 나는 항상 다이아몬드 연산자를 잊어 버린다! – RNJ

+0

@oldrinb 무엇을 의미합니까? "생성 된 HashMap의 매개 변수화 된 유형을 추측합니다."-이 기능을 사용하는 코드는 어떻게 생겼을 까? – yoshi

0

자바 프레임 워크는 Multimap를 지원하지 않습니다, 주위에 방법이, 아래를 참조하십시오.

Map<Object,ArrayList<Object>> multiMap = new HashMap<Object,ArrayList<Object>>(); 

또한이 도서관에서 살펴 Guava-libraries

관련 문제