Java에서 HashMap 사용하기
예전에는 데이터를 저장하고자 하면 배열에다가 차곡차곡 쌓아놓적이 있습니다.
받는 데이터들을 그대로 저장만 하면 되니 간편하지만, 반대로 데이터를 가져올 때 매우 불편하였습니다.
커질수록 한없이 늘어나는 데이터 속에서 내가 원하는 데이터를 찾는다면 점차점차 느려지게 하였습니다.
그에 따라 이 방법을 보안하고자 점차 발달한게 Key-Value 컨셉입니다.
데이터를 저장하고 특정 키로 검색하면 값을 바로 받아볼 수 있기 때문에 데이터량이 증가되도 빠르게 원하는 데이터를 찾을 수 있었습니다.
자바에서 Key-Value 컨셉인 Map을 주로 설명하는데 이중에서 HashMap을 설명할 예정입니다.
HashMap은 Key-Value 값에 null을 허용하기 때문에 유용하게 쓰일 수 있습니다.
1. HashMap
HashMap 의 사용법에 대해서 알아보도록 하겠습니다.
1-1. 선언
기본적으로 Map을 선언하고 HashMap을 불러옵니다
Map map = new HashMap();
또는
HashMap map = new HashMap();
그리고 이클립스에서 HashMap을 사용하려면 뒤에 Key-Value의 변수형을 명확하게 해주는 것을 권장하고 있습니다.
아래와 같이 정해줄 경우, 데이터의 형식이 일정하다보니 좀더 빠르게 찾을 수 있고, 보기에도 명확합니다.
HashMap<String, Integer> map = new HashMap<String, Integer>();
1-2. 데이터 저장
간단하게 put 명령으로 저장할 수 있습니다.
예를 들어, key 는 String으로 Value 는 Int 형으로 저장해보도록 하겠습니다.
map.put("국어", 90);
map.put("수학", 80);
1-3. 데이터 불러오기
불러오는 것은 get 명령으로 값을 가져올 수 있습니다.
get 뒤에 key를 넣어주면 됩니다.
System.out.println("국어 점수 : " + map.get("국어"));
국어 점수 : 90
2. HashMap + List
이번에는 HashMap을 여러개 사용해서 생성된 데이터를 List 에 추가한 다음 가져와보도록 하겠습니다.
2-1. 샘플(1)
아래와 같이 2개의 데이터를 저장해보도록 하겠습니다.
Map map;
List list = new ArrayList();
// 첫번째
map = new HashMap();
map.put("국어", 90);
map.put("수학", 80);
list.add(map);
// 두번째
map = new HashMap();
map.put("국어", 55);
map.put("수학", 65);
list.add(map);
저장한 데이터를 출력하면 아래와 같이 나옵니다.
System.out.println(list);
[{수학=80, 국어=90}, {수학=65, 국어=55}]
2-2. 샘플(2)
이제 집어넣은 데이터를 가져올 차례입니다.
List 에 저장된 HashMap 데이터를 사용하기 위에서는 HashMap을 만든 다음, 캐스팅 연산으로 가져오도록 합니다.
HashMap getMap = new HashMap();
getMap = (HashMap)list.get(0);
System.out.println("1번째 국어 점수 : " + getMap.get("국어"));
getMap = (HashMap)list.get(1);
System.out.println("2번째 국어 점수 : " + getMap.get("국어"));
출력된 결과는 아래와 같이 나타납니다.
1번째 국어 점수 : 90
2번째 국어 점수 : 55
데이터가 많으면 for 문으로 돌리면 됩니다.
~(^_ ^ )~
Map 종류에는 HashMap 말고도 TreeMap도 있고, 각각마다 기능이 다양합니다.
예를 들어 HashMap 의 경우는 데이터 저장이 느리지만, 데이터를 가져올 때는 빠르게 가져올 수 있습니다.
그리고 Key 랑 Value 값에 null을 허용하기 때문에 저장할 때, 데이터가 빠져있어도 문제가 되지 않습니다.
TreeMap 은 HashMap 에 비해서는 데이터 저장이 조금 빠르고 가져올 때 약간 느립니다.
정렬할 수 기능이 있다고 하는데 아직 해보지 않았네요.
'프로그래밍 > Java' 카테고리의 다른 글
Spring xml를 이용해서 뿌려주기 (0) | 2013.09.07 |
---|---|
contains + split 기능 사용하기 (0) | 2013.07.19 |
Forward && Redirect (0) | 2012.08.01 |
JSTL 설정 방법 (0) | 2012.07.31 |
HanServlet 실습 (0) | 2012.07.26 |