오봉이와 함께하는 개발 블로그

컬렉션 프레임워크 - Map(HashMap) 본문

알고리즘 & 자료구조 & 네트워크

컬렉션 프레임워크 - Map(HashMap)

오봉봉이 2021. 11. 30. 17:41
728x90

Algorithmday_3 정리 (2021.11.30 화요일)

Map

  • Map 인터페이스
  • 키(Key)와 값(Value)의 쌍으로 이루어진 데이터의 집합
  • 키와 값은 모두 객체
  • 키는 중복될 수 없지만 값은 중복 가능
  • 기존에 저장된 데이터와 중복된 키 값을 저장하면 기존의 값은 없어지고 마지막에 저장된 값이 남음(값을 덮어쓴다)
  • 구현 클래스 : HashMap, HashTable, LinkedHashMap, Properties, TreeMap
  • 일반적으로 Key의 타입은 String 많이 사용한다.
  • HashMap을 생성 하려면 Key와 Value 모두 매개변수 작성을 해야 한다.
  • Map<K, V> map = new HashMap<K, V>();
HashMap 예제
HashMapEx1.java
public class HashMapEx1 {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        // 갹체 저장
        map.put("홍길동", 85);
        map.put("이몽룡", 90);
        map.put("홍길동", 80);
        map.put("성춘향", 95);
        System.out.println("총 Entry 수 : " + map.size()); // 총 Entry 수 : 3
        System.out.println(map); // {성춘향=95, 홍길동=80, 이몽룡=90}
        System.out.println(map.get("홍길동")); // 80 (Key 홍길동의 Value 출력
        System.out.println(map.keySet()); // [성춘향, 홍길동, 이몽룡] Key 값만 출력됨
        for(String key : map.keySet()) {
            System.out.println(key + " : " + map.get(key));
        }
//        성춘향 : 95
//        홍길동 : 80
//        이몽룡 : 90
        map.remove("홍길동", 85); // 홍길동은 80인데 85를 넣으면 지워지지 않음
        System.out.println("총 Entry 수 : " + map.size()); // 총 Entry 수 : 3

        map.remove("홍길동");
        System.out.println("총 Entry 수 : " + map.size()); // 총 Entry 수 : 2

        map.clear();
        System.out.println("총 Entry 수 : " + map.size()); // 총 Entry 수 : 0
    }
}
HashMapEx2.java
public class HashMapEx2 {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<String, String>();
        Scanner scan = new Scanner(System.in);
        map.put("apple", "사과");
        map.put("summer", "여름");
        map.put("school", "학교");
        map.put("bus", "버스");
        map.put("water", "물");
        while (true) {
            System.out.print("찾고 싶은 단어는? ");
            String str = scan.next();
            if(str.equals("exit")) {
                System.out.println("종료합니다");
                System.exit(0);
            }
            else {
                if(map.keySet().contains(str)) {
                    System.out.println(map.get(str));
                }
                else {
                    System.out.println("없는 단어 입니다.");
                }
            }
        }
    }
}
HashMapEx3.java
public class HashMapEx3 {
    public static void main(String[] args) {
        HashMap<String, String[]> pNum = new HashMap<String, String[]>();
        pNum.put("친구1",
                new String[] {"010-1111-1111", "02-1111-1111", "friend1@google.com"});
        pNum.put("친구2",
                new String[] {"010-2222-2222", "02-2222-2222", "friend2@google.com"});
        pNum.put("친구3",
                new String[] {"010-3333-3333", "02-3333-3333", "friend2@google.com"});
        pNum.put("동기",
                new String[] {"010-4444-4444", "02-4444-4444", "sametime@google.com"});
        pNum.put("부장님",
                new String[] {"010-5555-5555", "02-5555-5555", "boss@google.com"});
        System.out.println("총 그룹 수 : " + pNum.size());

        // 모든 정보 조회
        for(String key : pNum.keySet()) {
            System.out.print(key + " : ");
//            String[] pList = pNum.get(key);
//            for(String one : pList) {
            for(String one : pNum.get(key)) {
                System.out.print(one + " | ");
            }
            System.out.println();
        }
        System.out.println();
        System.out.print("\n동기 검색 : ");
        if(pNum.containsKey("동기")) {
            for(String one : pNum.get("동기")) {
                System.out.print(one + " | ");
            }
        }
        System.out.println();
        System.out.print("\n사장님 검색 : ");
        if(pNum.containsKey("사장님")) {
            for(String one : pNum.get("사장님")) {
                System.out.print(one + " | ");
            }
        } else {
            System.out.println("연락처 없음");
        }
    }
}
728x90

'알고리즘 & 자료구조 & 네트워크' 카테고리의 다른 글

정렬(Sort)  (0) 2021.12.01
트리(Tree)  (0) 2021.11.30
컬렉션 프레임워크 - Set(HashSet) & Iterator  (0) 2021.11.30
컬렉션 프레임워크 - Vector  (0) 2021.11.30
컬렉션 프레임워크 - LinkedList  (0) 2021.11.30
Comments