ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - Map
    Java 2018. 1. 25. 12:19
    반응형
    < Map >


    // HashMap은 Map Interface로 구현한 대표적 Map Collection이다
    // Key와 Value Type은 Class 및 Interface만 가능하다(int -> Integer)
    // Collection Interface를 구현하지 않기때문에 기존과는 조금 다른 method를
    // 사용한다. Key: value store는 순서가 없다 Type은 Key,Value 2개를 쓴다

    // 단일 값을 검색 할 경우 Key를 통해 Value를 찾는다
    // 모든 값을 가져 올 경우는 두가지 방법을 사용 한다.
    // 1. 모든 Key를 Set으로 가져와 key를 Itrator하는 방법
    // 2. Map(key,value)을 Set으로 가져와 key/value 단위로 iterator하는 방법

    // 중복이 허용 되지만 특정일 경우만 가능 ex) 홍길동 100 홍길동 200 // 홍길동으로 찾으면 값이 200으로 덮어 씌워진다

    // Key값은 중복이 안되서 값이 덮어 나온다.

    // Value값은 중복 가능


    // Tree구조는 들어갈 때 느리지만 검색이 빠르다.

    < HashMap >

    import java.util.HashMap;

    public class HashMapMain {

        public static void main(String[] args) {
            
            // 맵 생성
            HashMap<String, Integer> map = new HashMap<>(); // 다이아몬드 연산자 사용 가능
            
            // 값 넣기 .put() 이용
            map.put("kim", 23);
            map.put("lee", 26); // 값 중복은 허용 가능
            map.put("park", 26);
            map.put("kim", 32); // Key중복은 허용이 안되서 마지막 값으로 덮어 나온다
            
            // 크기 출력
            System.out.println(map.size());
            
            // 특정 키로 값 출력
            System.out.println("kim의 나이 : "+map.get("kim"));

    // 값 삭제
    map.remove("lee");
    System.out.println(map.size());

           
    // map의 값을 하나씩 출력 방법 1
    // key들만 set으로 가져옴 -> iterator로 key를 하나씩 쪼갠다
    Set<String> keySet = map.keySet();
    Iterator<String> keyIter = keySet.iterator();
            
    while(keyIter.hasNext()){
        String key = keyIter.next(); // 하나씩
        int value = map.get(key); // key
        System.out.println(key + " : " + value);


    // map의 값을 하나씩 출력 방법 2
    // map 자체를 set으로 가져옴 -> iterator로 k-v 형태로 하나씩 쪼갠다
    Set<Entry<String, Integer>> entrySet = map.entrySet();
    Iterator<Entry<String, Integer>> entryIter = entrySet.iterator(); // Map자체가 들어가서 Entry
            
    while(entryIter.hasNext()) {
        Entry<String, Integer> entryMap = entryIter.next();
        System.out.println(entryMap.getKey()+" : "+entryMap.getValue());
    }


    // 비었는지 확인
    if(!entrySet.isEmpty()) { // 안 비어있으면
    System.out.println("비우기");
    entrySet.clear();
    System.out.println("Map의 크기 : " + map.size());
    }

        }

    }



    < HashTable >

    // HashTable도 ArrayList, Vector의 차이 처럼
    // HashMap과 Thread Safe의 차이만 있다.
    // HashMap과 동일한 method를 사용 한다.

    import java.util.Hashtable;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;

    public class HashTableMain {

        public static void main(String[] args) {
            
            // HashMap과 사용 방법 동일
            Map<String, Integer> map = new Hashtable<>(); // 다이아몬드 연산자, 옆에 참조
            // 이름, 점수
            map.put("강영빈", 25);
            map.put("강일빈", 35);
            map.put("강이빈", 45);
            map.put("강삼빈", 55);
            map.put("강사빈", 65);
            map.put("강오빈", 75);
            map.put("강육빈", 85);
            map.put("강칠빈", 95);
            map.put("강헝빈", 95);
            map.put("강팔빈", 15);
            map.put("강구빈", 100);
            
            // 특정 키가 있는지 확인
            System.out.println(map.containsKey("강삼빈")); // boolean로 반환
            
            // 특정 값이 있는지 확인
            System.out.println(map.containsValue(95)); // boolean로 반환
            
            // keySet
            Set<String> keySet = map.keySet();
            Iterator<String> keyIter = keySet.iterator();
            while(keyIter.hasNext()) {
                System.out.println(keyIter.next());
            }
            
            // EntrySet, 특정 값을 통해 키를 찾기
            Set<Entry<String, Integer>> entrySet = map.entrySet();
            Iterator<Entry<String, Integer>> entryIter = entrySet.iterator();
            while(entryIter.hasNext()) {
                Entry<String, Integer> entryMap = entryIter.next();
                if(entryMap.getValue().equals(95)){
                    System.out.println("95의 키는 -> "+entryMap.getKey());
                }
                // System.out.println(entryMap.getKey() + " : " + entryMap.getValue());
            }
            
        }

    }




    반응형

    'Java' 카테고리의 다른 글

    Java - 정규표현식  (0) 2018.01.26
    Java - Stack, Queue  (0) 2018.01.25
    Java - Collection  (0) 2018.01.25
    Java - Generic Method  (0) 2018.01.24
    Java - Generic  (0) 2018.01.24

    댓글

Designed by Tistory.