※ Collection 프레임 워크의 Map 인터페이스 계열
- 키(key)와 값(value)의 한 쌍으로 갖는 데이터를 구조
- 사물함 같다
★키는 중복 안되고, 값은 중복 허용된다
예를 들어 주민등록번호와 이름을 갖는 구조라든지, 전화번호와 이름을 구조로 갖는다든지
★ 대표적인 구현체 클래스는 HashMap, Properties
*HashTable은 구 버전이므로 HashMap을 쓰면 된다
Map 객체 크기 _map.size();
map.isEmpty(); _Map 객체가 비어있는가?
Map 객체 전체 요소 출력
Object put(Object key, Object value) : key에 해당하는 value 저장
Map<k, v>에서 put을 사용할 때는 key가 같으면 기존의 값을 덮어써버린다. 다르면 수정한다
그래서 추가와 수정에 사용되는 메서드가 동일하다
map.put(“admin”,“사오정”);
map.put(“member”,“사오정”);
map.put(“admin”,“저팔계”);
키가 중복일 때 값을 덮어쓰는데 출력되는 것은 삭제되는 값이다
=put() 메서드 리턴 타입이 있는 이유는 중복된 키 지정 시 제거되는 값을 리턴한다
Object get(Object key) 키에 해당하는 vlaue를 리턴(키 존재하지 않으면 null 리턴)
map.get(“admin”);
boolean containsKey(Object key) 키가 존재하는지 리턴
boolean containsValue(Object value) value가 존재하는지를 리턴
Set keySet() 객체 안의 모든 key 들을 Set 타입 객체로 리턴
Set keySet = map.keySet();
System.out.println("모든 키 : " + keySet);
Set keySet() 객체 안의 모든 key들을 Set 타입 객체로 리턴하므로
key는 set에만 들어가지만 value는 collection 타입 (인터페이스)
value는 list, set 모두 가능하지만 set을 쓰면 중복 값이 다 날아가니 조심해야 한다
Collection values() : 객체 안의 모든 value 들을 Collection 타입 객체로 리턴
Collection 타입의 자식들 타입으로도 전달받을 수 있음
단, Collection -> List 또는 Set으로 다운 캐스팅이 불가능하므로
new 연산자를 사용하여 객체 생성 파라미터에 values() 메서드 리턴 값 전달
List valueList=(List) map.values(); 다운 캐스팅이 불가하다
그래서 해결 방법(1) ArrayList 객체 생성 시, 파라미터로 values() 리턴값 전달하면 Collection -> List 가능
List valuesLsit=new ArrayList(map.values());
그래서 해결 방법(2) collection 타입 변수로 저장도 가능
Collection collection=map.values();
map.entrySet() 모든 키와 값을 묶어서 세트로 리턴
Object remove(Object key) : key에 해당하는 key 와 value 모두 삭제
(삭제 값 리턴)
키가 존재하지 않으므로 null 리턴
boolean remove(Object key, Object value)_key 와 value에해당하는key, value 삭제
=> 삭제될(존재할) 경우 true, 삭제되지(존재하지) 않을 경우 false 리턴
ㅣ읽느라 수고 많으셨어요~ㅣ
부족한 글을 읽어주셔서 감사드립니다
아직 부족한 게 많으니
틀린 곳이 있다면
조언의 말씀 꼭 부탁드립니다!!!!