HashMap데이터를 저장할 때 키(Key)와 밸류(Value)가 짝을 이루어 저장됩니다. 데이터를 저장할 때는 키(Key) 값으로 해시함수를 실행한 결과를 통해 저장위치를 결정합니다. 따라서 HashMap은 특정 데이터의 저장위치를 해시함수를 통해 바로 알 수 있기 때문에 데이터의 추가, 삭제, 특히 검색이 빠르다는 장점이 있습니다. 

이러한 이유로 HashMap은 키(Key)값을 통해서만 검색이 가능하며, HashMap의 키(Key) 값은 중복될 수 없고, 밸류(Value) 값은 키(Key) 값이 다르다면 중복이 가능합니다. 

 

[HashMap 생성방법]

Map<String, String> map1 = new HashMap<String, String>();
Map<String, String> map2 = new HashMap<String, String>(map1);

 

[HashMap 메서드]

// 데이터 추가
map1.put("key_name1", "value_data1");
map1.put("key_name2", "value_data2");
map2.putIfAbsent("key_name1", "value_data"); // 기존 데이터에 추가하려는 key 없을 경우 저장합니다.
map2.putAll(map1);                           // map1의 데이터를 전부 저장합니다.

// 데이터 삭제
map2.clear();                            // 모든 데이터 삭제
map1.remove("key_name1");                // key와 일치하는 기존 데이터의 key와 value 삭제
map1.remove("key_name1", "value_data1"); // key와 value 동시에 일치하는 데이트 삭제

// 데이터 삭제
map1.containsKey("key_name1");    // key와 일치하는 데이터가 있는지 여부 확인(있으면 true) 
map1.containsValue("value_data1");// value와 일치하는 데이터가 있는지 여부 확인(있으면 true)
map1.isEmpty(); // map1 빈상태이면 true를 반환한다.
map1.size();    // map1 요소 갯수를 반환한다.

// 데이터 수정
map1.replace("key_name1", "value_data3"); // key_name1의 내용을 value_data1 -> value_data3 변경한다.
map1.replace("key_name1", "value_data1", "value_data3"); // key와 value 동시에 일치하는 내용을 value_data1 -> value_data3 변경한다.

/* 데이터 반환 */
// keySet
Set<String> keySet = map1.keySet(); // 모든 key 값을 가진 Set 데이터를 반환합니다. 
for (String key: map1.keySet()) {
    String value1 = map1.get(key);		// value 값 반환함.
    String value2 = map1.getOrDefault(key, "default") // key와 맵핑된 value가 없는 경우 "default" 값을 반환함.
}

// entrySet
Set<Map.Entry<String, String>> entrySet = map1.entrySet();  
for (Map.Entry<String, String>  entry : entrySet) {
    System.out.println("[key]:" + entry.getKey() + ", [value]:" + entry.getValue());
}

// iterator
Iterator iteratorE = map1.entrySet().iterator();
while (iteratorE.hasNext()) {
    Map.Entry<String, String> entry = (Map.Entry<String, String>) iteratorE.next();
    System.out.println("[key]:" + entry.getKey() + ", [value]:" + entry.getValue());
}

// ArrayList + HashMap
private ArrayList<HashMap<String, String>> mArrayList = new ArrayList<HashMap<String, String>>();

/*ArrayList 에 개별적으로 하나씩 HashMap Data 추가*/
Iterator iteratorE = map1.entrySet().iterator();
while (iteratorE.hasNext()) {
    Map.Entry<String, String> entry = (Map.Entry<String, String>) iteratorE.next();
    
    Map<String, String> dataMap = new HashMap<String, String>();
    dataMap.put(entry.getKey(), entry.getValue());
    
    mArrayList.add((HashMap<String, String>) dataMap);
}

/*ArrayList에 추가된 Hashmap Data 불러오기*/
for(int i = 0 ; i < mArrayList.size() ; i++) {
    Map mapInfo = mArrayList.get(i);
    
    Iterator iteratorE = mapInfo.entrySet().iterator();
    while (iteratorE.hasNext()) {
        Map.Entry<String, String> entry = (Map.Entry<String, String>) iteratorE.next();
        String key = entry.getKey();
        String value = entry.getValue();
    }
}

 

 

 

+ Recent posts