Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용한다.
key: 실질적인 값(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 인스턴스에 저장된 모든 엔트리를 문자열로 변환하여 반환하는 메소드다.
System.out.println(map.toString());
System.out.println(map);//toString 생략 가능
Map 인스턴스에 저장된 엔트리 중 전달받은 키와 같은 엔트리를 삭제하는 메소드다.
//삭제 하기전 map: {2000=학생이름2, 4000=학생이름4, 1000=학생이름1, 3000=학생이름3}
map.remove(4000);
System.out.print(map);//출력 {2000=학생이름777, 1000=학생이름1, 3000=학생이름3}
Map 인스턴스에 저장된 엔트리 중 전달받은 키와 같은 엔트리의 값을 반환하는 메소드다.
//map: {2000=학생이름777, 1000=학생이름1, 3000=학생이름3}
String name = map.get(1000);
System.out.println(name);//출력: 학생이름1
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 인스턴스에 저장된 모든 엔트리의 키를 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,
}