2013-06-11 5 views
1

현재 구성되어있는지도가 있습니다.하위 항목을 최신 항목으로 덮어 쓰지 않고 데이터를 추가합니다.

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

는 목적은 설정을 할 수있는 곳 훨씬처럼 다음

array("foo"->array(1->"aaa",2->"bbb",3->"ccc"), 
     "bar"->array(1->"aaa",2->"bbb",3->"ccc"), 
     "bah"->array(1->"aaa",2->"bbb",3->"ccc"), 
) 

의 I가 실행 해요 문제는 내가 잘 루트 배열을 만들 수 있지만, 그것은 것입니다

array("foo"->array(3->"ccc"), 
     "bar"->array(2->"bbb"), 
     "bah"->array(3->"ccc"), 
) 

은 내가 찾을려고하는 것은이 덮어도록하는 것과는 반대로 나는 하위 배열을 추가 할 수있는 방법입니다 그림과 같이 앞의 예를 사용하여 다음을 수행합니다. 나는 쉽게 끝났다고 가정합니다. 나는 명백한 것을 놓치고 있습니다.

답변

5

먼저지도에 특정 키에 대한 항목이 있는지 확인해야합니다. 그렇지 않다면 빈 arraylist를 추가하십시오.

그런 다음지도에서 arraylist를 가져 와서 해당 arraylist에 개체를 추가하십시오.

Map<String, ArrayList<Object>> map = new HashMap<String, ArrayList<Object>>(); 
    String first = "FIRST"; 
    if (map.get(first) == null){ 
     map.put(first, new ArrayList<Object>()); 
    } 

    map.get(first).add(new Object()); 

위의지도를 인쇄하면 원하는 결과가 출력됩니다.

0

당신은 하위 배열에 추가하는 방법을 만들고,이 존재하지 않는 경우를 만들 수 있습니다

Map<String, ArrayList<Object>> map = new HashMap<String, ArrayList<Object>>(); 
addToArray(map, "foo", "aaa"); 
addToArray(map, "foo", "bbb"); 
addToArray(map, "foo", "ccc"); 

addToArray(map, "bar", "aaa"); 
// ... 

을 그리고 그 방법은 다음과 같습니다

private static void addToArray(final Map<String, ArrayList<Object>> map, final String key, final Object object) { 
    if (!map.containsKey(key)) 
     map.put(key, new ArrayList<Object>()); 
    map.get(key).add(object); 
} 

당신이 만약 배열에 문자열 만 저장하면 ArrayList<Object> 대신 ArrayList<String>을 사용할 수 있습니다.

0

배열의 길이가 고정되어 있기 때문에 배열의 Java에 추가 할 수 없습니다. 대신 ArrayList을 사용하시기 바랍니다. 다음과 같이 Map에 추가

appendToMap("foo", "aaa"); 
appendToMap("foo", "bbb"); 
// and so on... 
0

스위치 대신 ObjectString (목록은 항상 문자열을 포함 할 경우)

Map<String, List<String>> map = new HashMap<String, List<String>>(); 

에 :

HashMap<String, ArrayList<Object>> map = new HashMap<String, ArrayList<Object>>(); 

public void appendToMap(String key, Object o) 
{ 
    if(!map.containsKey(key)) 
    { 
     map.put(key, new ArrayList<Object>()); 
    } 
    map.get(key).add(o); 
} 

는 그 후 당신의 값을 설정 다음과 같습니다.

// check if a List already exists 
if ((list = map.get("foo")) == null) { // if !exists, 

    list = new ArrayList<String>(1); // CREATE a new List 
    list.add("aaa"); 
    map.put("foo", list); // ADD the new List to Map 

} else { // if exists, 
    list.add("aaa"); // ADD to the existing List 
} 
관련 문제