HashMap
HashMap은 키와 값을 묶어서 하나의 데이터로 저장한다는 특징을 가지고 있스빈다 그리고 해싱을 사용하기때문에 많은 양의 데이터를 검색하는데 있어 뛰어난 성능을 보여줍니다
hashmap은 키와 값을 각각 Object타입으올 저장합니다 즉 Object,Object의 형태로 저장하기떄문에 어떠한 객체도 저장할수있지만 키는 주로 String을 대문자 또는 소문자로 통일해서 사용하곤 합니다.
여기서 키는 컬렉션내의 키중에서 유일해야합니다.즉 HashMap에 저장된 데이터를 하나의 키로 검색했을떄 결과가 단 하나이어야 함을 뜻합니다 만일 하나의 키에대해 여러 검색결과 값을 얻는다면 원하는 값이 어떤 것인지 알 수 없기 떄문입니다. 예를들어 사용자가 키로 비밀번호가 값으로 연결되어 저장된 데이터 집합이 있을때 단하나의 결과를 얻어야만 올바른 비밀번호를 입력했는지 확인이 가능할 것입니다 만일 하나의 사용자 에 대해서 두개 이상의 비밀번호를 얻는다면 어떤 비밀번호가 맞는것인지 알수 없습니다.
public class Ex07 {
public static void main(String[] args) {
java.util.Map map1 = new java.util.HashMap();
//key의 중복은 불가능하나 value의 중복은 가능합니다
map1.put("key1","val1");
map1.put("key2","val2");
map1.put("key2","val3");
System.out.println(map1.get("key1"));
System.out.println(map1.get("key2"));
}
}
위의 코드는 HashMap을 생성하고 데이터를 저장하는 부분인데 이코드를 실행하면 아래와 같은 형태가 저장이됩니다
3개의 데이터를 저장했지만 실제로는 2개밖에 저장되지 않고 출력된것을 볼수 있습니다 이유는 중복된 키가 있기 떄문으로 세번째로 저장한 key2는 이미 존재하기 떄문에 새로 추가되는 대신 기존의 값을 덮어썼습니다 그래서 key2에 연결된값은 val3이 됩니다 map은 값의 중복을 허용하지만 키는 중복을 허용하지 않기떄문에 저장하려는 두데이터중 어느쪽을 키로 할 것인지 잘결정해야합니다.
HashMap은 데이터를 키와 값을 모드 Object타입으로 저장하기떄문에 HashMap의 값으로 HashMap을다시저장할수있습니다이렇게함으로써하나의키에다시복수데이터를저장할수있습니다