Map 에는 key값에는 중복이 허용되지 않는다
만약에 one ->1 일때 one->200이 들어오면
새로운 one은 못들어오고 기존에 있던 one->1이 one->200으로 바뀐다
valuer값은 중복이 허용된다.
만약에 two->2 가 있을때 three->2가 들어오는 것은 허용된다
주로 처음에 맵을 이용하면 해쉬맵을 사용한다고 보면된다
List와 Set은 그 값이 하나만 들어오기 때문에 구현할때
List<String> a = new List<String>();
이런식으로 쓸수있었다
하지만 맵은 들어오는 값이 두개이기때문에 제너릭에 <String, Integer>
이런식으로 두개의 값을 넣어줘야한다. 여기서 첫번째 String은 key, 두번째 Integer은 value이다.
기본적인 map 사용법
a.put("one", 1);
a.put("two", 2);
System.out.println(a.get("one")); // 1
System.out.println(a.get("two")); // 2
a.containsKey("one"); //true
이번엔 반복문을 통해서 전체출력 방법을 알아보자
Set s = a.entrySet();
System.out.println(s);
Iterator i = a.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
iteratorUsingForEach(a);
static void iteratorUsingForEach(HashMap map) {
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for (Map.Entery<String, Integer> entry : entries) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
iteratorUsingIterator(a);
static void iteratorUsingIterator(Hashmap map) {
Set<Map.Entry<String, Integer>> entries = map.entrySet();
Iterator<Map.Entry<String, Integer>> i = entries.iterator();
while(i.hasNext()) {
Map.Entry<String, Integer> entry = i.next();
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
Map에 값을 전체 출력하기 위해서는 entrySet(), keySet() 메소드를 사용하면 되는데 entrySet() 메서드는 key와 value의 값이 모두 필요한 경우 사용하고, keySet() 메서드는 key의 값만 필요한 경우 사용합니다.
출처: https://tychejin.tistory.com/31