Map
- key값과 value값을 한 쌍으로 관리하는 객체
- key값은 중복을 허용하지않고 순서(index)가 없다 (Set의 특징을 갖는다)
- value값은 중복을 허용한다.
map의 메서드
- 자료 추가 ==> put(key값, value값)
- 자료 수정 ==> put(key값, value값)
데이터를 추가할 때 key값이 같으면 나중에 추가한 값이 저장된다. - 자료 삭제 ==> remove(key값)
key값이 같은 자료를 찾아서 삭제한다
반환값 : 삭제된 자료의 value값 - 자료 읽기 ==> get(key값)
key값과 짝이되는 value값을 반환한다.
key값이 없으면 null을 반환한다. - key값이 존재하는지 여부 나타내는 메서드 ==> containsKey(key값)
해당 'key값'이 있으면 true, 없으면 false - Map에 저장된 전체 데이터를 차례로 사용하는 방법
- key값을 이용하는 방법 ==> keySet()
- Map에 저장된 모든 key값들을 읽어와 Set형으로 반환한다.
Set<String> keySet = map.keySet();
( iterator와 향상된 for문으로 처리할 수 있다 ) - value값을 이용하는 방법 ==> values()
value값만 읽어온다
for(String value : map.values()) {} - Map의 내부 객체인 Entry객체를 이용하는 방법 ==> entrySet()
(읽어온 Entry들은 Set형식으로 되어있다.)
[ Map에는 Entry라는 내부class가 만들어져있다.
이 Entry클래스는 key와 value라는 멤버변수로 구성되어있다.
Map에서는 이 Entry클래스를 Set형식으로 저장하여 관리한다 ]
Set<Map.Entry<String, String>> entrySet = map.entrySet();
( iterator와 향상된 for문으로 처리할 수 있다 )
- key값을 이용하는 방법 ==> keySet()
import java.util.HashMap;
public class MapTest {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
// put(key값, value값)
map.put("name", "홍길동");
map.put("addr", "대전");
map.put("tel", "010-1234-4567");
System.out.println("map => "+ map); // map => {name=홍길동, tel=010-1234-4567, addr=대전}
// 자료 수정
map.put("addr", "서울");
System.out.println("map => "+ map); // map => {name=홍길동, tel=010-1234-4567, addr=서울}
// remove(key값)
// String removeTel = map.remove("tel");
// System.out.println("map => "+ map); // map => {name=홍길동, addr=서울}
// System.out.println("삭제된 값 : "+removeTel); // 삭제된 값 : 010-1234-4567
// get(key값)
System.out.println("이름 : "+map.get("name")); // 이름 : 홍길동
System.out.println();
// containsKey(key값)
System.out.println("tel 키값의 존재 여부 : "+map.containsKey("tel")); // tel 키값의 존재 여부 : true
System.out.println("age 키값의 존재 여부 : "+map.containsKey("age")); // age 키값의 존재 여부 : false
// Map에 저장된 전체 데이터를 차례로 사용하는 방법
//keySet()
Set<String> keySet = map.keySet();
// set형을 Iterator를 이용하여 처리하기
Iterator<String> it = keySet.iterator();
while(it.hasNext()) {
String key = it.next();
String value = map.get(key);
System.out.println(key + " : "+ value);
}
System.out.println();
// 향상된 for문을 이용하여 처리하기
for(String key : keySet) { // for(String key : map.ketSet())
String value = map.get(key);
System.out.println(key + " = "+ value);
}
// values()
for(String value : map.values()) {
System.out.println(value);
}
System.out.println();
// entrySet()
// Entry라는 내부 객체 전체를 가져오기
Set<Map.Entry<String, String>> entrySet = map.entrySet();
// iterator로 구하기
Iterator<Map.Entry<String, String>> entryIt = entrySet.iterator();
while(entryIt.hasNext()) {
// Entry 객체 1개 구하기
Map.Entry<String, String> entry = entryIt.next();
System.out.println("key 값 : "+entry.getKey());
System.out.println("value 값 : "+entry.getValue());
}
//for문으로 구하기
for(Map.Entry<String, String> entry : entrySet) { // for(Map.Entry<String, String> entry : map.entrySet)
System.out.println("key 값 : "+entry.getKey());
System.out.println("value 값 : "+entry.getValue());
}
}
}
'JAVA > HIGH JAVA' 카테고리의 다른 글
[JAVA] Properties (0) | 2024.04.25 |
---|---|
4/24 Homework - 전화번호 관리/ Scanner next(),nextLine() (0) | 2024.04.24 |
[JAVA] Equals HashCode (0) | 2024.04.24 |
4/23 Homework - 야구게임, 로또생성기 (0) | 2024.04.24 |
[JAVA] Set (0) | 2024.04.23 |