HashMap
: HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다.
1. HashMap 개요
Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고 있습니다. Map은 Key와 Value로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조입니다. 여기서 키와 값은 모두 객체입니다.
값은 중복 저장될 수 있지만 키는 중복 저장될 수 없습니다. 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치됩니다.
HashMap은 이름 그대로 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보입니다.
2. HashMap API
:HashMap은 여러 가지 API을 제공합니다.
2.1. put()
Map<String, String> animal = new HashMap<>();
animal.put("cat", "one");
animal.put("dog", "two");
animal.put(null,"four");
System.out.println("animal : " + animal);
Result:
animal : {null=four, cat=one, dog=two}
※ HashMap의 특징으로 null도 허용하기 때문에 null도 put이 가능합니다.
2.2. putAll()
putAll은 두 개의 Map을 합칠 때 사용합니다.
Map<String, Integer> food = new HashMap<>();
food.put("chicken", 1);
food.put("pizza", 2);
animal.putAll(food);
System.out.println("food : " + food);
Result:
food : {chicken=1, pizza=2}
Map선언 시 같은 타입일 때만 putAll이 가능합니다. Map<String, Integer> 와 Map<String, String>은 putAll()이 불가능합니다.
2.3. get()
: key에 해당하는 value의 값을 리턴해줍니다. 이때 key가 존재하지 않으면 null을 리턴합니다.
Map<String, Integer> animal = new HashMap<>();
animal.put("dog",1);
animal.put("pig",2);
System.out.println("dog : " + animal.get("dog"));
System.out.println("pig : " + animal.get("pig"));
Result:
dog : 1
pit : 2
2.4. remove()
: key에 해당하는 데이터를 삭제합니다. 삭제가 되면 value값이 리턴됩니다.
Map<String, Integer> fruits = new HashMap<>();
fruits.put("apple", 2);
System.out.println("apple : " + fruits.get("apple"));
System.out.println("apple : " + fruits.remove("apple"));
System.out.println("apple : " + fruits.get("apple"));
Result:
apple : 2
apple : 2
apple : null
순서대로 보면 remove를 하였을 때 remove 한 value 값을 리턴해서 보여주고 있습니다. 다시 apple을 get 하면 데이터가 지워진 것을 확인할 수 있습니다.
2.5. keySet()
: HashMap에 저장된 Key들이 리턴됩니다.
Map<String , Integer> animal = new HashMap<>();
animal.put("dog", 5);
animal.put("cat", 3);
System.out.println("animal_keyset : " + animal.keySet());
Result:
animal_keyset : [cat, dog]
2.6. clear()
: 모든 데이터를 삭제합니다.
Map<String, Integer> fruits = new HashMap<>();
fruits.put("apple", 1);
fruits.put("banana", 2);
fruits.clear();
System.out.println("fruits : " + fruits);
Result:
fruits : {}
2.7. isEmpty()
: 데이터가 비어있다면 true를 리턴하고 아니라면 false를 리턴합니다.
Map<String, Integer> fruits = new HashMap<>();
fruits.put("apple", 1);
fruits.put("banana", 2);
System.out.println("fruits : " + fruits);
System.out.println("is empty? " + fruits.isEmpty());
fruits.clear();
System.out.println("fruits : " + fruits);
System.out.println("is empty? " + fruits.isEmpty());
Result:
fruits : {banana=2, apple=1}
is empty? false
fruits : {}
is empty? true
2.8. containsKey()
: HashMap에 인자로 전달된 key가 존재하면 true를 리턴하고 그렇지 않으면 false를 리턴합니다.
Map<String, Integer> fruits = new HashMap<>();
fruits.put("apple", 1);
fruits.put("banana", 2);
System.out.println("containsKey(apple) : " + fruits.containsKey("apple"));
System.out.println("containsKey(undefined) : " + fruits.containsKey("undefined"));
Result:
containsKey(apple) : true
containsKey(undefined) : false
2.9. containsValue()
: HashMap에 인자로 전달된 value 존재하면 true를 리턴하고 그렇지 않으면 false를 리턴합니다.
Map<String, Integer> fruits = new HashMap<>();
fruits.put("apple", 1);
fruits.put("banana", 2);
System.out.println("containsValue(1) : " + fruits.containsValue(1));
System.out.println("containsValue(0) : " + fruits.containsValue(0));
Result:
containsValue(1) : true
containsValue(0) : false
2.10. replace()
: replace()는 인자로 전달된 key의 value를 인자로 전달된 value로 교체되며,
교체되어 삭제되는 value는 리턴하고 존재하지 않는 key가 인자로 전달되면 null이 리턴됩니다.
Map<String, Integer> fruits = new HashMap<>();
fruits.put("apple", 1);
fruits.put("banana", 2);
System.out.println("fruits : " + fruits);
System.out.println("replace(apple, 10) : " + fruits.replace("apple", 10));
System.out.println("replace(undefined, 10) : " + fruits.replace("undefined", 10));
System.out.println("fruits : " + fruits);
Result:
fruits : {banana=2, apple=1}
replace(apple, 10) : 1
replace(undefined, 10) : null
fruits : {banana=2, apple=10}
2.11. size()
: 해당 Map의 매핑의 총 개수를 반환합니다.
Map<String, Integer> fruits = new HashMap<>();
fruits.put("apple", 1);
fruits.put("banana", 2);
fruits.put("kiwi", 3);
System.out.println("fruits : " + fruits.size());
Result:
fruits : 3
'Programming 개발은 구글로 > JAVA[Android]' 카테고리의 다른 글
[안드로이드] Androidx 사용법 (0) | 2022.05.17 |
---|---|
[안드로이드] 적응형 앱아이콘(Adaptive icon) (0) | 2022.05.16 |
[RxJava] RxBus(Rx로 구현한 EventBus) (0) | 2022.05.11 |
[안드로이드] 아키텍쳐 컴포넌트(AAC) - LiveData, Databinding, Room, ViewModel (0) | 2022.05.10 |
Android studio - 한글지원 (0) | 2022.04.27 |
댓글