MAP에 대해 알아보자.
Map은 키(key)와 값(value)을 묶어서 하나의 데이터로 저장한다는 특징을 갖는다. 키를 통해 값을 검색하므로, 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 발휘한다. 가장 많이 쓰이는 것이 HashMap이다. 키는 불변이고 값은 중복될 수 있다.
<=Python에서 Dictionary 타입 =><key:value> JSON format, Hadoop, BigData, ....
Map은 길이를 ~.length를 사용하지 않고 ~.size를 사용한다.
Map 구조는 Key로 value를 찾기 때문에, 배열처럼 메모리 공간에 순차적으로 자리를 잡고 있지 않아서 for문 등을 이용하여 값을 업어올 수 있다. Map 구조의 내용을 순차적으로 얻어오기 위해서는 iterator라고 하는 반복자를 이용해야 한다.
먼저 Map구조의 내용을 출력하기 위해 Key값들을 모두 가져온다.
Set<String> keys = map2.keySet(); // map2의 모든 key값을 keys에 저장
//map2의 키는 String이기 때문에 keys의 제네릭 타입 또한 String으로 한다.
package ex2_collection_map;
import java.util.HashMap;
public class Ex1_HashMap {
public static void main(String[] args) {
//Map은 키(key)와 값(value)을 묶어서 하나의 데이터로 저장한다
//키값을 알면 데이터를 쉽게 업어올 수 있으므로 많은 양의 검색에 매우 뛰어난 성능을 발휘한다.
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "임창정");
map.put(2, "방탄소년단");
map.put(3, "임창정");
map.put(1, "강동원");//중복된 키값이라면 마지막으로 적용한 데이터로 갱신
map.remove(2);//키값을 이용해서 데이터를 삭제한다
boolean aa = map.containsKey(1);
System.out.println(aa);
System.out.println("크기 : "+map.size());
System.out.println(map);
String res = map.get(2); //키값이 2로 저장된 실제 데이터를 가져온다.
System.out.println(res);
}//main
}

package ex2_collection_map;
import java.util.HashMap;
public class Ex2_HashMap {
public static void main(String[] args) {
//J
//A
//V
//A
HashMap<String, Character> map =new HashMap<>();
map.put("k1", 'A');
map.put("k2", 'J');
map.put("k3", 'V');
System.out.println(""+map.get("k2")+
map.get("k1")+
map.get("k3")+
map.get("k1"));
}//main
}

package ex2_collection_map;
import java.util.HashMap;
import java.util.Scanner;
public class Ex3_HashMap {
public static void main(String[] args) {
//키보드에서 아이디와 비밀번호를 받아서 아래의 결과를 출력해보자
//-----------------
//id : abc
//pwd : 1111
//아이디가 존재하지 않습니다
//id : kim
//pwd : 3333
//비밀번호 불일치
///id : jo
//pwd : 3333
//로그인 성공!
Scanner sc = new Scanner(System.in);
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("kim", 1111);
map.put("park", 2222);
map.put("jo", 3333);
System.out.print("id : ");
String id =sc.next();
System.out.print("pwd : ");
int pwd =sc.nextInt();
if (map.containsKey(id)==false) {
//맵에 등록되어 있지 않은 id를 키보드에서 입력 받았을때
System.out.println("아이디가 존재하지 않습니다");
}else {
//아이디가 일치하므로 비밀번호가 일치하는지 확인
if (map.get(id) != pwd) {
System.out.println("비밀번호가 일치하지 않습니다");
}else {
System.out.println("로그인 성공!!");
}
}
}
}

package java13;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Test02 {
public static void main(String[] args) {
HashMap<String, Boolean> map = new HashMap<>();
map.put("k1", true);
map.put("k2", true);
map.put("k2", false); // 키는 무조건 하나밖에 없어야 하므로 두번째
//두번째 k2키를 넣으면 추가가 아니라 키값이 변경된 경우이다.
System.out.println("Map의 사이즈 : "+map.size()); //map.length() 사용 안 함
boolean b1 = map.get("k1");
System.out.println("b1 : "+b1);
boolean b2 =map.get("k2");
System.out.println("b2 : "+b2);
System.out.println("------------");
HashMap<String, String> map2 = new HashMap<>();
map2.put("s1", "My key is s1");
map2.put("s2", "My key is s2");
map2.put("s3", "My key is s3");
String str1 = map2.get("s1");
System.out.println("str1 : "+str1);
String str2 = map2.get("s2");
System.out.println("str2 : "+str2);
String str3 = map2.get("s3");
System.out.println("str3 : "+str3);
System.out.println("---------------");
Set<String> keys = map2.keySet(); // 모든 키들을 모은다.
Iterator<String> it = keys.iterator();
while (it.hasNext()) {
String k = it.next();
String v = map2.get(k);
System.out.println(k + ":" + v);
}
}

package java13;
import java.util.HashMap;
import java.util.Scanner;
public class Test03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("kim", 1111);
map.put("lee", 2222);
Scanner scan = new Scanner(System.in);
while (true) {
System.out.println("ID를 입력하세요");
String id = scan.next();
System.out.println("PW를 입력하세요");
int pwd = scan.nextInt();
if (!map.containsKey(id)) {
System.out.println("ID가 없어요....");
}else { //ID가 있다는 전제하에서 PW까지 있으면 로그인 성공을 보임
if(map.get(id)!=pwd) {
System.out.println("PW가 없어요....");
}else {
System.out.println("로그인 성공");
break;
}
}
}
}
}

'JAVA' 카테고리의 다른 글
| [JAVA]collections, set/list/map인터페이스 (0) | 2022.08.03 |
|---|---|
| [JAVA] ArrayList (0) | 2022.08.03 |
| [JAVA] Set (0) | 2022.08.02 |
| [JAVA] wait()과 notify() (0) | 2022.08.02 |
| [JAVA] getter와 setter (0) | 2022.08.02 |
댓글