이전 걸음까지 중요한 자료구조인 List와 Set에 대해서 공부를 하였습니다. 이번 걸음에서는 Java의 자료구조의 마지막을 다뤄보려고 합니다. 이전 자료구조를 잘 이해를 하셨다면 어렵지 않게 이번 자료구조도 이해를 하실 수 있습니다.
Map에 대해서 이번 걸음에서 공부를 해보도록 하겠습니다. Map에 대한 전반적인 내용과 함께 예제를 적용하여 사용을 하는 방법까지 이야기를 할 예정입니다. 이번 걸음을 끝까지 보신다면 Map에 대한 이해가 많아 지실 수 있습니다.
Map이란 무엇 인지와 Map에 사용을 하는 Method 그리고 마지막으로는 Map의 예제를 통해 Map을 사용을 할 수 있는 방법을 같이 공부를 하도록 하겠습니다. 끝까지 이 글을 읽어 주세요!
Map 이란?
Map의 자료구조는 Key와 Value로 구성이 됩니다. 말 그대로 Key은 Value를 찾기 위한 열쇠이고 그 열쇠를 이용해서 접근을 하면 값을 사용을 할 수 있습니다. Key는 중복이 허용이 안됩니다. 같은 열쇠가 있으면 어느 것을 여는지 알 수가 없기 때문입니다. 하지만 Value은 중복이 허용됩니다. Key로 Value를 얻기 때문에 중복이 크게 상관이 없어지기 때문입니다.
※ 관련 인터페이서 : Map / 관련 클래스 : hashMap, treeMap
Map 관련 Method
추가 -> put(key, value)
값 추출 -> get(key)
키를 모두 추출 keyset() -> Set 변수로 받아야 합니다.
Set 검색 방식으로 반복하면서
Get(key)호출해서 값을 출력
remove(key) -> 삭제
Map 예제 소스
class C{
int k;
}
class D{
String str;
}
public class MapTest1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<C, D> map = new HashMap();
C c = new C();
C c1 = new C();
map.put(c, new D());
map.get(c1); // null
map.get(c);//객체 D를 리턴
}
}
위 소스와 같이 Key를 C객체로 하고 D를 값 객체로 활용해서 Map을 사용을 하고 있습니다. Key와 Value은 참조 자료형이면 뭐든 가능합니다.
HashMap a = new HashMap<Integer, String>();
a.put(0, "가위"); // map에 추가
a.put(1, "바위");
a.put(2, "보");
/*안됩니다. 아래와 같이하려면 List
for(int i =0;i<a.size();i++) {
a.get(i)
}*/
Set<Integer> key=a.keySet(); //1. 키꾸러미 뺀다 -> Set
Iterator<Integer> i = key.iterator(); //2. iterator 변경
while(i.hasNext()) { // 3. hasNext 그 다음 값이 있는 확인 한다.
Integer temp = i.next(); // 4. 그 다음 값을 추출한다.
System.out.println(a.get(temp));
// 5. 추출된 key 값을 이용해 map-> get 함수 매개변수에 넣어준다.
}
위 예제 소스를 보면 데이터 추가와 while문으로 key을 모르면 검색을 할 수 있는 방법에 대한 예제 입니다. key를 알면 바로 접근해서 그 안에 Value를 가질 수 있지만 Key를 모르는 경우에는 keyset()를 활용을 하면 전체 데이터를 확인을 해볼 수 있습니다.