본문 바로가기
java

Map 컬렉션 클래스

by 코딩하는아재냥 2022. 4. 27.

Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가집니다.

key-value 방식

여기서 키(key)란 실질적인 값(value)을 찾기 위한 이름의 역할을 합니다. 

 

Map 인터페이스를 구현한 모든 Map 컬렉션 클래스는 다음과 같은 특징을 갑니다.

 

1. 요소의 저장 순서를 유지하지 않습니다. // 1번은 Set 컬렉션 클래스와 동일

2. 키는 중복을 허용하지 않지만, 값(value)의 중복은 허용합니다 // 이러한 이유때문에 ID,PW 에서 쓸 수 밖에 없음

 

대표적인 Map 컬렉션 클래스에 속하는 클래스

 

1.HashMap<K,V>

2. Hashtable<K, V>

3. TreeMap<K, V>

 

HashMap 클래스


HashMap을 사용해서 ID를 만들어보자

 

HashMap map = new HashMap();  // 키,밸류는 보통 String 타입으로씀

 

// put >> List와 Set 과 다르게 put을 사용 // 여기서 드는생각 /  왜 add가 아닌 put을 썼을까?   

지금까지 배운 범위에서 이해했을때) List,Set,Map은 다 배열이다 하지만 Map만 유일하게

                                                하나의 박스를 넣을때 2칸짜리 박스를 넣기때문에 다르게 표기한것같다.

( K , Y ) << 키와 밸류는 보통 문자열을 사용한다.


1 map.put("myId", "1234"); // 입력할떄 쓰는것 // 키는 유니크한값 >> 중복이 안되기때문에
2 map.put("asdf", "1111"); // 
3 map.put("asdf", "1234"); //  2번 적고 3번적으면 2,3 키가 같기때문에 중복은 안되며,

                                  나중에 적은 3번이 2번을 덮고 값을 반환한다.
System.out.println(map);

 

>> 그렇게 출력을 하면 

myId , 1234

asdf , 1234 가 출력된다.


Scanner sc = new Scanner(System.in);

while(true) {
System.out.println("ID를 입력 :");
String ID = sc.next();

System.out.println("PW를 입력 :");
String PW = sc.next();

//id가 생성가능한지 확인하고 pw 를 만들어야한다. >>ID(키)는 중복이 안되기때문에 컨테인으로 확인하면서

if (!map.containsKey(ID)) { // 맵 배열에 동일한 ID가 포함되어있는지 확인 //
System.out.println("아이디가 존재하지 않습니다");
continue; 
}
if (!map.get(ID).equals(PW)) {//ID의 리턴값을 불러와라 == 그거랑 PW가 같은지 확인
System.out.println("패스워드 불일치");
continue; 
}else {
System.out.println("로그인 성공쓰");
break;
      }

}


//key와 value를 한번에 쓸때 
HashMap map = new HashMap();

map.put("김자바", new Integer(90)); // put(K key, V value) 메소드 // 해당 맵에 전달된 키에 대응하는 값으로 매핑함.
map.put("김자바", new Integer(100));  
map.put("이자바", new Integer(100));
map.put("강자바", new Integer(80));
map.put("안자바", new Integer(90));
//System.out.println("---------------------------------------");

Set set = map.entrySet(); // Map에 값을 전체 출력+ Key와 value값이 모두 필요한 경우= entrySet() 메소드를 사용

//추가로 Set으로 한 이유는 중복을 없애기 위해
Iterator it = set.iterator();

while(it.hasNext()) { // 둘다 가져올때
Map.Entry e = (Map.Entry)it.next(); // object 타입이면 안댐 // 키는 스트링타입 // 밸류는 인티저타입 이라서 캐스팅연산을 해야한다.


System.out.println("이름 : "+e.getKey());
System.out.println("점수: "+e.getValue());
}

//System.out.println("---------------------------------------");
set = map.keySet();
it = set.iterator();

while(it.hasNext()) { // 이거는 키값만 가져올때
String key = (String)it.next();
System.out.println(key + " " + map.get(key) );
}
//System.out.println("---------------------------------------");

// value는 반환타입이 collection
Collection values = map.values();//  밸류값만 가져올려고 하는거라는데
it = values.iterator();
while(it.hasNext()) { 
Integer value = (Integer)it.next();
System.out.println(value);



 

'java' 카테고리의 다른 글

쓰레드(Thread),쓰레드 구현하는방법  (0) 2022.04.28
properties  (0) 2022.04.27
Set 컬렉션,HashSet,TreeSet  (0) 2022.04.26
Iterator와 Listlterator  (0) 2022.04.26
Stack과 Queue  (0) 2022.04.26

댓글