[Java] HashMap 사용법 / Iterator
Map 인터페이스를 구현한 대표적인 Map 컬렉션.
Map 인터페이스를 상속하고 있어, Map 성질을 그대로 가지고 있음.
Map은 키와 값으로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조.
HashMap 선언
HashMap<String,String> map1 = new HashMap<String,String>();//HashMap생성
HashMap<String,String> map2 = new HashMap<>();//new에서 타입 파라미터 생략가능
HashMap<String,String> map3 = new HashMap<>(map1);//map1의 모든 값을 가진 HashMap생성
HashMap<String,String> map4 = new HashMap<>(10);//초기 용량(capacity)지정
HashMap<String,String> map5 = new HashMap<>(10, 0.7f);//초기 capacity,load factor지정
HashMap<String,String> map6 = new HashMap<String,String>();
HashMap 값 추가
HashMap<Integer,String> map = new HashMap<>();
map.put(1,"a"); //값 추가 key와 value값을 넣어야 함
map.put(2,"b");
map.put(3,"c");
HashMap 값 삭제
HashMap<Integer,String> map = new HashMap<>();
map.put(1,"a");
map.put(2,"b");
map.put(3,"c");
map.remove(1); //key값 1 제거
map.clear(); //모든 값 제거
HashMap 값 출력
map.put(1,"a"); //값 추가
map.put(2,"b");
map.put(3,"c");
System.out.println(map); // {1=a, 2=b, 3=c}
System.out.println(map.get(1)); // a
//KeySet() 활용
for(Integer i : map.keySet()){
System.out.println("[Key]:" + i + " [Value]:" + map.get(i));
}
// [Key]:1 [Value]:a
// [Key]:2 [Value]:b
// [Key]:3 [Value]:c
Iterator
**Iterator<데이터타입> iterator명 = 컬렉션.iterator();**데이터타입>
컬렉션 프레임워크에서 값을 가져오거나 삭제할 때 사용한다.
장점
- 모든 컬렉션 프레임워크에 공통으로 사용 가능
- 컬렉션 프레임워크에서 쉽게 값을 가져오고 제거할 수 있음
- 3개의 메소드만 알면 돼서 사용하기 쉬움
단점
- 처음부터 끝까지의 단방향 반복만 가능
- 값 변경 및 추가 불가능
- 대량의 데이터를 제어할 때 속도가 느림
Iterator.hasNext()
Iterator 안에 다음 값이 들어있는지 확인(true, false)
Iterator.next()
iterator의 다음 값 가져오기
Iterator.remove()
iterator에서 next() 시에 가져왔던 값을 컬렉션(List, Set, Map) 등에서 삭제
반드시 next() 후에 사용해야 함
Iterator 사용
HashMap<Integer,String> map = new HashMap<Integer,String>();
//entrySet().iterator()
Iterator<Map.Entry<Integer, String>> entries = map.entrySet().iterator();
while(entries.hasNext()){
Map.Entry<Integer, String> entry = entries.next();
System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}
//[Key]:1 [Value]:a
//[Key]:2 [Value]:b
//[Key]:3 [Value]:c
//keySet().iterator()
Iterator<Integer> keys = map.keySet().iterator();
while(keys.hasNext()){
int key = keys.next();
System.out.println("[Key]:" + key + " [Value]:" + map.get(key));
}
//[Key]:1 [Value]:a
//[Key]:2 [Value]:b
//[Key]:3 [Value]:c
댓글남기기