[JAVA]자바 자료형(HashSet, HashMap)

Intro

정보처리기사 실기에서 나온 자바 자료형 중에서 몰랐던 내용들을 정리한다.

HashSet

HashSet이란, set 인터페이스를 구현한 클래스이다.

HashSet 특징

  • 중복을 허용하지 않는다.
  • 순서가 중요하지 않다.(저장 순서 유지 X)
  • null 요소도 허용된다.
  • 출력 시 리스트 형태로 출력된다 (대괄호형태로 출력).

중복을 걸러내는 과정

  • HashSet은 객체를 저장하기 전에, hashCode() 메서드를 호출하여 해시코드를 얻는다.
  • 저장되어 있는 객체들의 해시코드를 비교하여 같은 해시코드가 있다면 다시 equals()메서드로 두 객체를 비교하여 True가 나올 경우 동일한 객체로 판단하여 저장하지 않는다.

HashSet 메서드

  • 선언
    1
    2
    
    HashSet<데이터타입> 변수명 = new HashSet<데이터타입>() // 기본 선언형태;
    HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3)); //초기값 지정형태
    
  • add(value)
    1
    2
    3
    4
    
    HashSet<Integer> set = new HashSet<Integer>(); //HashSet생성
    set.add(1); //값 1 추가
    set.add(2); //값 2 추가
    set.add(3); //값 3 추가
    
  • remove(value) & clear()
    1
    2
    
    set.remove(1); // 값 1 삭제
    set.clear(); // 모든 값 삭제
    
  • size()
    1
    2
    
    HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3,4)); //HashSet 생성
    System.out.println("set 크기 : " + set.size()); //set 크기 : 4
    
  • contains(value)
    1
    2
    
    HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3,4)); //HashSet 생성
    System.out.println("확인 : " + set.contains(1)) // 확인 : true
    
  • 출력 (Set컬렉션을 그냥 print하게 되면 대괄호 [ ]로 묶여서 set의 전체 값이 출력된다.)
    1
    2
    
    HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3,4)); //HashSet 생성
    System.out.println("출력 : " + set) // 출력 : [1,2,3,4]
    

HashMap

HashMap이란, Map 인터페이스를 구현한 컬렉션이다. (인터페이스를 구현한 것이기에 Map의 성질을 모두 갖고 있다)

HashMap 특징

  • Map은 키:값 형태로 저장된다.
  • 값은 중복 저장되지만 키는 중복 저장될 수 없다는 특징을 갖고 있다.

HashMap 메서드

  • 선언
1
2
3
4
5
// HashMap 생성(기본형태)
HashMap<String,String> map1 = new HashMap<String,String>(); 

// HashMap 생성 후 초기값 지정(바로 값 추가 필요할 경우)
HashMap<String,String> map2 = new HashMap<String,String>();
  • put(key, value)
    1
    2
    3
    
    map.put("개발언어","자바"); //'개발언어'라는 키에 '자바'라는 값이 들어감.
    map.put("DB","mysql"); //'DB'라는 키에 'mysql;이라는 값이 들어감.
    map.put("형상관리","Git"); //'형상관리'라는 키에 'Git'이라는 값이 들어감.
    
  • remove(key) & clear()
    1
    2
    
    map.remove("개발언어"); //'개발언어'에 해당하는 값 제거
    map.clear(); //모든 값 제거
    
  • get(키) : 키에 대응하는 값이 출력된다.
    1
    2
    
    map.get("DB") // 결과 : mysql
    map.get("형상관리") // 결과 : Git
    
  • for반복문과 entrySet()활용
    1
    2
    3
    4
    5
    
    for (Entry<Integer, String> entry : map.entrySet()) {
      System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
    }
    // [Key]: DB [Value] : mysql
    // [Key]: 형상관리 [Value] : Git
    
  • containsKey (이미 HashMap에 키가 있으면 값을 덮어쓰지 않는 예)
    1
    2
    3
    4
    
    //키가 들어있는지 확인. 있으면 덮어쓰지 않는다.
    if(!map.containsKey("DB")){
      map.put("DB", PostgreSQL); 
    };
    

참조 사이트

HashSet 참조 사이트1
HashSet 참조 사이트2
HashMap 참조 사이트1
HashMap 참조 사이트2
HashMap 참조 사이트3