Map은 Key와 Value 한쌍으로 이루어진 자료형이다.
Map은 리스트나 배열처럼 순차적으로 해당 요소 값을 구하지 않고 Key를 통해 Value를 얻는다.
값(Value)은 중복될 수 있지만, Key는 고유한 값(Unique)을 가져야 한다.
Map은 저장 순서를 유지할 필요가 없고, Key를 통해 Value를 얻어내기 때문에 Key는 중복을 허용하지 않는다.
만약 이미 존재하는 Key값과 동일한 Key값을 put하면 새로운 Key값으로 갱신된다.
아래의 예제를 통해서 살펴보자.
public class PutTheSameName {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("김씨", "어부");
map.put("이씨", "광부");
map.put("박씨", "농부");
map.put("김씨", "무직");
for(String key : map.keySet())
System.out.println(key + " : " + map.get(key));
Map객체에 위와 같이 데이터를 넣었다고 해보자.
이미 존재하는 Key 값에 동일한 Key값을 넣었을 때 어떠한 결과가 나올까?
김씨라는 Key값을 2번 넣었지만, 김씨라는 Key값이 2번 출력되지는 않는다.
Key값이 이미 존재하는 경우 Value 값을 갱신하기 때문이다.
앞서, Map은 순서를 유지하지 않는다고 했는데 아래와 같은 예제로 확인해볼 수 있다.
public class OrderOfKeys {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("김씨", 1);
map.put("이씨", 2);
map.put("박씨", 3);
map.put("최씨", 4);
map.put("정씨", 5);
for(String key : map.keySet())
System.out.print(key, map.get(key));
위와 같이 출력하면 map에 저장한 순서대로 값이 출력될까?
아래의 결과처럼 순서대로 출력되지 않는다.