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값이 나옵니다.