[JAVA] HashMap 예제

정은아·2022년 7월 29일
package ja_0729;

import java.util.HashMap;
import java.util.Scanner;

public class HashMap_1 {
	public static void main(String[] args) {
		
		//HashMap map = new HashMap();
		HashMap<String, String> map = new HashMap<>();
		
		map.put("eunah0507", "222");
		map.put("gokgil", "222");
        map.put("gokgil", "555");
		map.put("LOVE", "333");
		
		Scanner ss = new Scanner(System.in);
		
		while(true)
		{
			System.out.println("id와 password를 입력해 주세요!");
			System.out.println("id : ");
			String id = ss.next().trim();
			
			if (!map.containsKey(id)) 
			{
				System.out.println("입력하신 " + id + "는 존재하지 않습니다.");
				continue;
			}
			else
			{
				System.out.println("password : ");
				String password = ss.next().trim();
			
				System.out.println();
				if (!(map.get(id).equals(password)))
					{
					System.out.println(map.get(id));
					
					System.out.println("비밀번호가 일치하지 않습니다. 다시 입력해 주세요!");
				}
				else
				{
					System.out.println("축하합니다. 로그인 하였습니다.");
					break;
				}
			}
		}
	}
}

키값은 중복되지 않는다. seoul pw는 사라진다. king만 로그인 가능하다.
아이디가 키값, 비밀번호가 value. value값은 중복이 가능하다.
ID를 KEY값, PW를 VALUE값으로 봅니다.
Key값은 중복되지 않습니다.
gokgil이라는 두 개의 ID가 존재하지만 위의 gokgil이 출력되지 않는 이유도 이와 같습니다. key값은 중복되지 않기 때문입니다.
이해가 잘 가지 않으신다면, 홈페이지를 가입할 때 ID중복확인을 하는것을 떠올리시면 편합니다. 같은 PW는 써도, 같은 ID는 쓰지 못하게 하니까요.

반대로 PW. 즉, VALUE값은 중복값을 갖습니다.

String password = ss.next().trim();

trim = 문자열(String) 입력받을 때 좌우 공백을 없애주는 역할을 합니다.
trim은 숫자열에선 쓸 수 없습니다. 그렇다면 숫자열에선 어떻게 해야
공백을 지워줄 수 있을까요? 간단합니다. 그냥 trim을 지우시고 쓰시면 됩니다.

System.out.println(map.get(id));

map.get(id)를 쓰면 pw가 나옵니다. ID와 PW를 비교하고, 확인하는 것입니다. password를 입력하면 null값이 나옵니다.

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글