Map은 키-값 쌍(Key-Value Pair)으로 데이터를 저장하는 자료구조입니다. Map은 각 키를 고유하게 유지하며, 키를 사용하여 값에 접근할 수 있습니다. 다양한 프로그래밍 언어에서 Map은 해시 테이블, 딕셔너리, 연관 배열 등의 형태로 구현됩니다.
해시맵 (HashMap)
특징: 키를 해싱하여 저장, 평균적으로 O(1)의 시간 복잡도로 빠른 검색 및 삽입이 가능
장점: 매우 빠른 검색, 삽입, 삭제 연산
단점: 키의 순서를 보장하지 않음
트리맵 (TreeMap)
특징: 키를 정렬된 순서로 저장 (이진 검색 트리 기반)
장점: 키의 순서가 중요할 때 사용, 범위 검색에 유리
단점: 삽입, 삭제, 검색 연산의 시간 복잡도가 O(log n)
링크드해시맵 (LinkedHashMap)
특징: 삽입 순서를 유지하는 해시맵
장점: 삽입 순서를 유지하면서 해시맵의 모든 장점을 가짐
단점: 일반 해시맵보다 약간 더 많은 메모리를 사용
1.빠른 검색: 키를 사용하여 값을 빠르게 검색할 수 있습니다.
2.유연성: 다양한 데이터 유형을 저장하고 관리할 수 있습니다.
3.키의 유일성: 각 키가 고유하므로 데이터의 중복을 방지할 수 있습니다.
4.다양한 구현: 해시맵, 트리맵, 링크드해시맵 등 다양한 구현체가 있어 상황에 맞게 선택할 수 있습니다.
package ex04.collection.map;
import java.util.*;
public class MainEntry {
public static void main(String[] args) {
Map map = new HashMap();
map.put("kosa", "1234");
map.put("msa", "1004");
map.put("doyeon", "789");
map.put("kosa", "1234"); // 중복이 있으면 덮어 씌움 중복허용 x
System.out.println("요소 개수 : " + map.size());
Scanner sc =new Scanner(System.in);
while(true) {
System.out.println("id와 password를 입력해주세요");
System.out.println("id : ");
String id =sc.nextLine().trim();
System.out.println("pwd : ");
String pwd =sc.nextLine().trim();
System.out.println();
if(!map.containsKey(id)) {
System.out.println("입력하신 id는 존재하지 않습니다. 다시 입력해주세요");
continue;
}else {
if(!map.get(id).equals(pwd)) {
System.out.println("비밀번호가 일치하지 않습니다. 다시 입력해주세요.");
}else {
System.out.println(id+"와 "+pwd+"가 일치합니다.");
System.out.println("환영합니다.");
break;
}
}
} // end while
}
}