코딩테스트/인프런 강의

04. HashMap, TreeSet (해쉬, 정렬지원 Set)

_Hiiro 2022. 10. 13. 01:32

HashMap의 기본적인 사용법

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

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        HashMap<Character, Integer> mp = new HashMap<>();   //HashMap 객체 생성, 제네릭스로 키 타입과, 값 타입을 명시해주어야 한다.

        String str = sc.nextLine();

        //HashMap 객체에 데이터 넣기
        for(char x : str.toCharArray()){
            mp.put(x,mp.getOrDefault(x,0)+1);   //생성한 HashMap 객체 내에 존재하는 키라면 그 키의 값을 1증가시켜 갱신하고, 없다면 기본값 0에 1을 더해서 추가한다.
        }

        //HashMap 객체에서 키, 값 데이터 꺼내기
        for(char x : mp.keySet()){
            System.out.println(x+" "+mp.get(x));
        }

        System.out.println(mp.containsKey('A'));    // HashMap 객체 내에 해당 키가 존재하는지 여부를 판별
        System.out.println(mp.containsValue(5));    // HashMap 객체 내에 해당 값이 존재하는지 여부를 판별
        System.out.println(mp.size());              // HashMap 객체 내에 몇개의 데이터가 있는지 확인
        System.out.println(mp.remove('A'));     // HashMap 객체 내에 해당하는 키값의 데이터를 삭제 후 그 값을 리턴해준다.
        System.out.println(mp.size());              // HashMap 객체의 사이즈가 1 감소한 것을 확인할 수 있다.
        System.out.println(mp.remove('A'));     // 존재하지 않는 키 데이터를 삭제하려고 하면 null 값 리턴

    }

 

 

TreeSet

TreeSet은 정렬기능을 사용할 수 있는 클래스로써 중복 값들을 제거하고자 할 때 사용하는 클래스이다.

 

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

public static void main(String[] args) {
        int[] arr = {10,55,30,346,5};
        TreeSet<Integer> ts = new TreeSet<>();  // 디폴트로 오름차순 정렬
//        TreeSet<Integer> ts2 = new TreeSet<>(Comparator.reverseOrder());    // 내림차순 정렬 설정
        for(int x : arr){
            ts.add(x);
        }
        System.out.println(ts); // 전체 TreeSet 값들을 [...] 형식으로 출력
        System.out.println(ts.first()); // TreeSet 값들 중 가장 작은 값을 리턴 (내림차순으로 정렬된 경우 최댓값 리턴)
        System.out.println(ts.last());  // TreeSet 값들 중 가장 큰 값을 리턴 (내림차순으로 정렬된 경우 최솟값 리턴)
        System.out.println(ts.remove(30));    // TreeSet 값들 중 특정 값을 삭제
        System.out.println(ts.higher(30));    // TreeSet 값들 중 입력값보다 큰 데이터 중 최소값 출력 없으면 null
        System.out.println(ts.lower(30));     // TreeSet 값들 중 입력값보다 작은 데이터 중 최댓값 출력 없으면 null

        // for each 문으로 TreeSet 값들을 순서대로 출력
        for(int x : ts){
            System.out.print(x+" ");
        }
        System.out.println();

        // Iterator 사용
        Iterator iter = ts.iterator();
        while(iter.hasNext()){
            System.out.print(iter.next() + " ");
        }
}