Map
. Collection 인터페이스와는 다른 저장 방식으로 데이터 저장
. Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을
하나의 쌍으로 저장하는 방식(key-value 방식)을 사용
. 키(key)는 값(value)을 찾기 위한 이름의 역할
. 데이터의 저장 순서를 유지하지 않음
. key : 중복을 허용 X 덮어씀
. value : 중복은 허용 O
** HashMap<K, V> 클래스
. Map 컬렉션 클래스에서 가장 많이 사용되는 클래스
. key와 value를 묶어 하나의 entry로 저장
. 해시 알고리즘(hash algorithm)을 사용하여 많은 양의 데이터를
검색하는데 검색 속도가 매우 빠름
. 중복된 키로는 값을 저장할 수 없으며, value에 null값도 사용 가능
. HashMap <k,v> 주요 메소드
- void clear() : 해당 맵(map)의 모든 매핑(mapping)을 제거함.
- boolean containsKey(Object key) : 해당 맵이 전달된 키를
포함하고 있는지를 확인함.
- boolean containsValue(Object value) : 해당 맵이 전달된
값에 해당하는 하나 이상의 키를 포함하고 있는지를 확인함.
- V get(Object key) : 해당 맵에서 전달된 키에 대응하는 값을
반환함. 만약 해당 맵이 전달된 키를 포함한 매핑을 포함하고 있지
않으면 null을 반환함.
- boolean isEmpty() : 해당 맵이 비어있는지를 확인함.
- Set<K> keySet() : 해당 맵에 포함되어 있는 모든 키로
만들어진 Set 객체를 반환함.
- EntrySet() : 전체 조회시 많이 사용 -> 찾아보기
- V put(K key, V value) : 해당 맵에 전달된 키에 대응하는
값으로 특정 값을 매핑함.
- V remove(Object key) : 해당 맵에서 전달된 키에 대응하는
매핑을 제거함.
- boolean remove(Object key, Object value) :
해당 맵에서 특정 값에 대응하는 특정 키의 매핑을 제거함.
- V replace(K key, V value) : 해당 맵에서 전달된 키에
대응하는 값을 특정 값으로 대체함.
- boolean replace(K key, V oldValue, V newValue) :
해당 맵에서 특정 값에 대응하는 전달된 키의 값을 새로운 값으로 대체함.
- int size() : 해당 맵의 매핑의 총 개수를 반환함.
사용예) 정수로된 학번과 문자열 이름을 map에 저장하고
특정 학번의 학생이름을 출력
전체학생의 정보 출력
package exam04;
public class Person {
private String name;
private String regNO;
public Person() {}
public Person(String name, String regNO) {
this.name =name;
this.regNO =regNO;
}
public String getName() {
return name;
}
@Override
public String toString() {
return name +","+regNO;
}
}
package exam04;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import java.util.Set;
public class HashMapEx01 {
public static void main(String[] args) {
Map<Integer, String>map = new HashMap<Integer, String>();
//자료입력 put(key, value)
map.put(1001, "감자바");
map.put(1002, "홍길동");
map.put(1003, "강감찬");
map.put(1004, "라클이");
map.put(1001, "장금이");
System.out.println(map.get(1001));
System.out.println("학생 수 : "+map.size());
//전체조회
System.out.println(map);
Set <Integer> keys = map.keySet();// set으로 변환시켜 iterator사용가능
Iterator<Integer> iter = keys.iterator();
while(iter.hasNext()) {
int stID=iter.next().intValue();
// 데이터타입Value()호출시 기본타입으로 변환(명시적으로 지정)
String name = map.get(stID);
System.out.println(stID+","+name);
}
}
}
package exam05 ;
import java.util.Map;
import java.util.Map.Entry;
import exam04.Person;
import java.util.HashMap;
public class MapEx02 {
public static void main(String[] args) {
Map<Person, String>member = new HashMap<Person, String>();
Person p1 = new Person("이길남","000103-4567890");
Person p2 = new Person("전부다","051010-3456789");
Person p3 = new Person("안이다","970515-2567890");
//key는 Person, value는 주소
member.put(p1, "대전시 중구 계룡로 846");
member.put(p3, "충남 천안시 성정동 777");
member.put(new Person("홍길동","123456-08987654"),"청주시 서원구 장암동 86");
boolean flag= false;
String fName ="홍길순";
for(Entry<Person,String> entry : member.entrySet()) {
String name =entry.getKey().getName();
if(name.equals(fName)) {
System.out.println(entry.getKey()+"주 소: "+entry.getValue());
flag = true;
break;
}
}
if(!flag) {
System.out.println("홍길순 고객 정보 없음");
}
// if(member.containsKey(p2)) {
// System.out.println(p2+"회원정보 ");
// }else {
// System.out.println(p2+"회원정보 없음");
// }
}
}
'ddit > Java' 카테고리의 다른 글
객체지향개념을 이해하기 위한 게임만들기 (0) | 2022.06.10 |
---|---|
java eclipse에서 oracle계정 연동, 시퀀스, 프로시저 (0) | 2022.06.09 |
ArrayList를 이용한 학생리스트만들기 문제풀기/toString사용법 (0) | 2022.06.08 |
컬렉션프레임워크<ArrayList, iterator> (0) | 2022.06.07 |
제네릭(generic), 컬렉션 프레임워크 (Collection Framework) (0) | 2022.06.04 |