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();
}
}
'Android(Java)' 카테고리의 다른 글
| [Java] TextView 줄바꿈 방식 변경 (0) | 2024.09.27 |
|---|---|
| [Java] ListView Divider Line 좌/우 Inset 적용 및 Divider 삭제 (0) | 2024.09.27 |
| [Java] API 전송시 http 일 경우 허용하는 방법 (0) | 2024.08.30 |
| [Java] 앱 실행시 첫화면 흰색 또는 검정색 화면 안보이고 스플래시 바로 보이게 하기 (3) | 2024.08.23 |
| [Java] 클립보드 복사 / 붙여넣기 (0) | 2024.08.23 |