# HashMap, HashSet 차이

suding·2023년 10월 22일
0

Study

목록 보기
8/8
post-thumbnail

HashMap

: Map의 인터페이스를 구현한 대표적인 Map 컬렉션

  • Map은 키와 값으로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조
  • 값은 중복 저장이 되지만, 키는 중복 저장 불가
  • 만약 기존 키와 동일한 키로 저장하면 기존의 값이 없어지고 새로운 값이 대치된다.

HashMap 사용법

<선언>

HashMap<String, String> map1 = new HashMap<String, String>();//HashMap생성
HashMap<String, String> map2 = new HashMap<>();//new에서 타입 파라미터 생략가능
HashMap<String, String> map3 = new HashMap<>(map1);//map1의 모든 값을 가진 HashMap 생성
HashMap<String, String> map4 = new HashMap<>(10);//초기 용량 지정
HashMap<String, String> map5 = new HashMap<>(10, 0.7f);//초기 용량, load factor지정
HashMap<String, String> map6 = new HashMap<String,String>(){{//초기값 지정
put("a","b");
}};
  • HashMap은 저장공간보다 값이 추가로 들어오면 List처럼 저장공간을 추가로 늘리지만 한칸씩 늘리는 것이 아닌 약 두배로 늘린다. 이 과정에서 과부하가 많이 발생하기 때문에 초기용량을 지정할 수 있으면 지정해주는 것이 좋다.

<값 추가>

HashMap<Integer,String> map = new HashMap<>();//new에서 타입 파라미터 생략가능
map.put(1,"사과"); //값 추가
map.put(2, "바나나");
map.put(3, "포도");
  • HashMap에 값을 추가하려면 put(key, value)메소드를 사용

<삭제>

HashMap<Integer, String> map = new HashMap<Integer, String>(){{//초기값 지정
put(1, "사과");
put(2, "바나나");
put(3, "포도");
}};
map.remove(1); //key값 1 제거
map.clear(); //모든 값 제거
  • 오직 key값으로만 Map의 요소를 삭제할 수 있다.
    HashMap<Integer, String> map = new HashMap<Integer, String>(){{//초기값 지정
    put(1, "사과");
    put(2, "바나나");
    put(3, "포도");
    }};
    
    System.out.println(map); //전체 출력: {1=사과, 2=바나나, 3=포도}
    System.out.println(map.get(1));//key값 1의 value를 가져옴 > 사과
    
    //entrySet() 활용
    for(Entry<Integer, String> entry : map.entrySet()){
    System.out.println("[Key]:" + entry.getKey() + "[Value]": + entry.getValue());
    }
    //[Key]:1 [Value]:사과
    //[Key]:2 [Value]:바나나
    //[Key]:3 [Value]:포도
    
    //Keyset() 활용
    for(Integer i: map.keySet()){//저장된 key값 확인
    System.out,println("[Key]:" + i + "[Value]:" + map.get(i));
    }
    //[Key]:1 [Value]:사과
    //[Key]:2 [Value]:바나나
    //[Key]:3 [Value]:포도
    
  • entrySet() : key와 value 모두가 필요한 경우 사용 keySet(): key 값만 필요한 경우 사용 💡 key 값을 이용해서 value를 찾는 과정은 시간이 많이 소모되기 때문에 많은 양의 데이터를 가져와야하는 상황에서는 entrySet()을 사용하는 것이 좋다.
profile
SudingWord

0개의 댓글