Java - Map
2023. 2. 1. 16:21ㆍ코딩일기/JAVA
Map : 키-벨류 쌍으로 데이터를 저장하는 방식
GitHub - jake5113/Mrhi_JAVA
Contribute to jake5113/Mrhi_JAVA development by creating an account on GitHub.
github.com
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
public class MapTest {
public static void main(String[] args) {
// Map : 키-벨류 쌍으로 데이터를 저장하는 방식
// Map도 인터페이스여서 바로 객체생성은 불가능
// Map 인터페이스를 구현한 하위 클래스들 : HashMap, TreeMap, LinkedHashMap, HashTable [HashMap과
// 동일 - 동기화처리가 되어 있음]
// <key, value>
// 1) HashMap
//HashMap<String, String> map = new HashMap<String, String>(); // 가장 성능 우수함.
// 2) TreeMap
// TreeMap<String, String> map = new TreeMap<>(); // 키값을 오름차순으로 저장 [성능 중간]
// 3) LinkedHashMap
LinkedHashMap<String, String> map = new LinkedHashMap<>(); // 저장된 순서대로 [성능 최하위]
// 4) HashTable [HashMap과 동일 - 동기화처리가 되어 있음]
// 요소추가
map.put("name", "sam"); // (식별자, 값)
map.put("id", "abcd"); // (key, value)
map.put("pass", "1234");
map.put("kkk", "sam"); // 데이터는 중복되지만 키값이 다르기에 추가됨
// 요소개수
System.out.println("요소 개수 : " + map.size());
// 요소 얻어오기
System.out.println(map.get("name")); // 키값으로 값얻기
System.out.println(map.get("id"));
System.out.println(map.get("pass"));
System.out.println(map.get("kkk"));
System.out.println();
// 키의 중복??
map.put("kkk", "hong"); // 키값이 중복되면 새로 추가되지 않고 그 위치값이 변경됨
System.out.println("요소 개수 : " + map.size());
System.out.println(map.get("name")); // 키값으로 값얻기
System.out.println(map.get("id"));
System.out.println(map.get("pass"));
System.out.println(map.get("kkk"));
System.out.println();
// 순서대로 요소값 얻어오기
// 방법1. for문은 불가 - index번호가 없음.
// 방법2. 확장된 for문도 불가.
// 방법3. 우선 키값들만 Set객체로 얻어와서 반복문으로 처리
Set<String> keys = map.keySet();
// 3-1 key들을 가진 Set 컬렉션 객체를 반복문으로 접근 **
for (String key : keys) {
System.out.println(map.get(key));
}
System.out.println();
// 3-2 key들을 가진 Set 컬렉션 객체를 반복자 iterator 이용
Iterator<String> datas = keys.iterator();
while (datas.hasNext()) {
String k = datas.next();
System.out.println(map.get(k));
}
System.out.println();
// 방법4. Map 객체를 Set객체로 변환하여 접근
// Map의 요소객체(키-벨류)인 Entry들을 가진 Set으로 변환
Set<Entry<String, String>> entries = map.entrySet();
for (Entry<String, String> t : entries) {
System.out.println(t.getKey() + " : " + t.getValue());
}
System.out.println();
// 요소 삭제
map.remove("kkk");
System.out.println(map.toString());
System.out.println();
// 키값을 그냥 정수 숫자로 할 수도 있음.
HashMap<Integer, String> map2 = new HashMap<>();
map2.put(1, "aaa");
map2.put(2, "bbb");
map2.put(3, "ccc");
}
}
반응형
'코딩일기 > JAVA' 카테고리의 다른 글
Java - 스레드 Thread (0) | 2023.02.02 |
---|---|
Java - CollectionsClass (0) | 2023.02.01 |
Java - Set (0) | 2023.02.01 |
Java - List (0) | 2023.02.01 |
Java - 제네릭 <Generic> (0) | 2023.02.01 |