[Java] java.util 패키지 - Map 컬렉션 클래스

chael_lo·2021년 5월 20일
0

Java

목록 보기
33/52

Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용한다.
key: 실질적인 값(value)을 찾기 위한 이름의 역할을 하며, 값을 빠르게 검색하기 위해 사용한다.(리스트의 단점을 보완한다.)

Map 인터페이스를 상속받는 자료구조 클래스의 특징

  1. 요소의 저장 순서를 유지하지 않는다.
  2. key는 중복을 허용하지 않지만, value의 중복은 허용한다.
  3. 일괄처리의 목적보다 빠르게 값을 찾는 것이 목적이다.
  4. Map 인터페이스를 상속받는 자료구조 클래스 중 대표적인 것은 HashMap, Hashtable이 있다.

Map 인터페이스 관련 메서드 종류

Map.put(K key, V value)

Map 인스턴스에 엔트리를 추가하는 메서드다.
키는 내부적으로 Set 인터페이스 타입으로 저장되며,
값은 Collection 인터페이스 타입으로 저장한다.
키는 중복 저장되지 않으며 순서없이 저장된다.

Map<Integer, String> map = new HashMap<Integer, String>();//HashMap을 통해 구현

map.put(1000, "학생이름1");
map.put(2000, "학생이름2");
map.put(3000, "학생이름3");
map.put(4000, "학생이름4");
System.out.println(map);//출력: {2000=학생이름2, 4000=학생이름4, 1000=학생이름1, 3000=학생이름3}
map.put(2000, "학생이름777");//학생이름2에서 학생이름777로 변경

Map.toString()

Map 인스턴스에 저장된 모든 엔트리를 문자열로 변환하여 반환하는 메소드다.

System.out.println(map.toString());
System.out.println(map);//toString 생략 가능

Map.remove(K key)

Map 인스턴스에 저장된 엔트리 중 전달받은 키와 같은 엔트리를 삭제하는 메소드다.

//삭제 하기전 map: {2000=학생이름2, 4000=학생이름4, 1000=학생이름1, 3000=학생이름3}

map.remove(4000);
System.out.print(map);//출력 {2000=학생이름777, 1000=학생이름1, 3000=학생이름3}

Map.get(K key)

Map 인스턴스에 저장된 엔트리 중 전달받은 키와 같은 엔트리의 값을 반환하는 메소드다.

//map: {2000=학생이름777, 1000=학생이름1, 3000=학생이름3}

String name = map.get(1000);
System.out.println(name);//출력: 학생이름1

Map.values()

Map 인스턴스에 저장된 모든 엔트리의 값을 Collection 인스턴스로 반환하는 메소드다.

//while문
Iterator<String> iteratorValue = map.values().iterator();
while(iteratorValue.hasNext()) {//출력: 학생이름777 학생이름1 학생이름3
	System.out.print(iteratorValue.next()+ " ");
}

//향상된 for문을 이용한 출력
for(String value:map.values()) {//출력: 학생이름777 학생이름1 학생이름3
	System.out.print(value+ " ");
}

Map.keySet()

Map 인스턴스에 저장된 모든 엔트리의 키를 Set 인스턴스로 반환하는 메소드다.

//while문
Iterator<Integer> iteratorKey = map.keySet().iterator();
		
while(iteratorKey.hasNext()) {//출력: 2000 학생이름777,1000 학생이름1,3000 학생이름3,
	Integer key = iteratorKey.next();
	System.out.print(key+ " "+map.get(key)+ ", ");
}

//향상된 for문을 이용한 출력
for(Integer key:map.keySet()) {
	System.out.print(key+ "= "+map.get(key)+ ", ");//출력: 2000 학생이름777,1000 학생이름1,3000 학생이름3,
}
profile
천천히 꾸준히

0개의 댓글