• Home
  • About
    • ming photo

      ming

      studying

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Archive
    • All Posts
    • All Tags
    • All categories
  • categories
    • HTML+CSS+JavaScript
    • JAVA
    • Algorithm
    • DB
    • JSP
    • 정보처리기사
    • Spring
    • Thymeleaf
    • 기술면접
  • Projects

JAVA-컬렉션 프레임워크-Map,LIFO와 FIFO 컬렉션

24 Feb 2021

✔ Map 컬렉션

- 키와 값으로 구성된 Map.Entry 객체 저장하는 구조를 가진다
- 키는 중복 저장될 수 없으나 값은 중복 저장될 수 있다
- 기존 저장된 키와 동일한 키로 값을 저장하면 기존 값 없어지고 새로운 값으로 대체
- HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등 ![map](https://user-images.githubusercontent.com/65608960/108928017-d5d1f700-7684-11eb-8818-be53aaf2478b.JPG) ![map2](https://user-images.githubusercontent.com/65608960/108928190-247f9100-7685-11eb-82c1-155bd1269e2a.JPG) ![hasnmap](https://user-images.githubusercontent.com/65608960/108928347-5bee3d80-7685-11eb-9f94-66fd1b7497f8.JPG) ![hashtable](https://user-images.githubusercontent.com/65608960/108942481-6d8e1000-769a-11eb-90d5-4dc89178688c.JPG) ![멀티스레드](https://user-images.githubusercontent.com/65608960/108940695-2baf9a80-7697-11eb-8dd8-f34e9374a126.JPG)

💢 Map 요소추가,요소검색,요소나열

  • 코드
      package com.javateam.jse;
    
      import java.util.HashMap;
      import java.util.Iterator;
      import java.util.Map;
      import java.util.Map.Entry;
      import java.util.Set;
    
      public class JavaEx55 {
    
          public static void main(String[] args) {
                
              // Map map = new HashMap(); // (O) -> @SuppressWarnings("unused")
              Map<String,String> map = new HashMap<>(); //  map 객체 생성 : HashMap 이용
                
              // 요소 추가
              map.put("신당","떡볶이");
              map.put("무교", "낙지볶음");
              map.put("신림", "순대");
              map.put("마장","육고기");
              map.put("응암", "감자탕");
              map.put("마포", "갈비");
              map.put("장충", "족발");
              map.put("의정부", "부대찌개");
              map.put("노량진", "회");
              map.put("무교", "설렁탕");
              map.put("노량진", "컵밥");
              //map.put(null, "컵밥"); (O) null 쓸수있지만 좋지않다
    
              System.out.println("map의 크기 : " + map.size()); // 키의 중복 배제(무교,노량진)
                
              // 낱개의 요소 검색 : key를 통해 값을 가져온다
              // 중복 : 마지막에 있는 값을 불러온다 -> 값의 중복은 허용 하지만 키의 중복은 허용하지 않는다
              System.out.println("임의의 키/값 : " + map.get("무교")); 
                
              // 전체 나열(검색)
                
              // 1) EntrySet => map.Entry => 가장 복잡한 방법
              // Set<Map.Entry<String,String>> set = map.entrySet(); // (O)
      //		Set<Entry<String,String>> set = map.entrySet();
      //		Iterator<Entry<String,String>>it = set.iterator();
      //		while(it.hasNext()) {
      //			
      //			Entry<String,String> keyEntry = it.next();
      //			String key = keyEntry.getKey();
      //			String value = keyEntry.getValue();
      //			System.out.println(key + " = " + value);
      //		}
                
              // 2) keySet -> 간단한다
      //		Set<String> set = map.keySet();
      //		Iterator<String> it = set.iterator();
      //		
      //		while(it.hasNext()) {
      //			String key = it.next();
      //			String value = map.get(key);
      //			System.out.println(key + "=" + value);
      //		}
    
              // 3) forEach => 간단하다 k,v : 변수 할당 안해도 된다 
      //		map.forEach((k,v)->System.out.println(k + "=" + v));
    
              // 4) entrySet.forEach => 가장 간단하다 = 도 자동으로 넣어준다
              // map.entrySet().forEach(x->System.out.println(x)); (O)
              // map.entrySet().forEach(System.out::println); // (O)
                
              // 5) keySet : k -> 다른 단어나 알파벳으로 해도 된다
              map.keySet().forEach(k->System.out.println(k+"="+map.get(k)));	
          }
    
      }
    

    ▶ Map 요소추가,요소검색,요소나열 정리

    • Map<String,String> map = new HashMap<>(); : map 객체 생성 -> HashMap 이용
    • .put(key값,value값) : 요소 추가
    • map.get(key값) : 낱개의 요소 검색 => key를 통해 값을 가져온다
      • 중복 : 마지막에 있는 값을 불러온다 -> 값의 중복은 허용 하지만 키의 중복은 허용하지 않는다
    • 요소 전체 나열 1) EntrySet => map.Entry => 가장 복잡한 방법 2) keySet -> 간단한다 3) forEach => 간단하다 k,v : 변수 할당 안해도 된다 4) entrySet.forEach => 가장 간단하다 = 도 자동으로 넣어준다 5) keySet : k -> 다른 단어나 알파벳으로 해도 된다

💢 Map HashMap,TreeMap 이용 객체생성,내림차순,오름차순 정렬

  • 코드
      package com.javateam.jse;
    
      import java.util.HashMap;
      import java.util.Iterator;
      import java.util.Map;
      import java.util.Map.Entry;
      import java.util.NavigableMap;
      import java.util.Set;
      import java.util.SortedMap;
      import java.util.TreeMap;
    
      public class JavaEx56 {
    
          public static void main(String[] args) {
                
              // Map<String,String> map = new HashMap<>(); // map 객체 생성 : HashMap 이용
              // Map<String,String> map = new TreeMap<>(); // map 객체 생성 : TreeMap이용
                
              // SortedMap 기본 : 키(key)중심으로 오름차순 정렬 된다
              // SortedMap<String,String> map = new TreeMap<>();
              // ** SortedMap 위에 NavigableMap 이 있다
              // NavigableMap 기본 : 키(key)중심으로 오름차순 정렬 된다
              NavigableMap<String,String> map = new TreeMap<>();
              //TreeMap<String,String> map = new TreeMap<>(); // (O)
            
              // 요소 추가
              map.put("신당","떡볶이");
              map.put("무교", "낙지볶음");
              map.put("신림", "순대");
              map.put("마장","육고기");
              map.put("응암", "감자탕");
              map.put("마포", "갈비");
              map.put("장충", "족발");
              map.put("의정부", "부대찌개");
              map.put("노량진", "회");
              map.put("무교", "설렁탕");
                
              // 전체 나열(검색)
              //map.entrySet().forEach(System.out::println);
    
              // 내림차순(descending) 정렬(sorting/ordering) -> NavigableMap
                
              // map.descendingKeySet() : map 은 오름차순이 유지된 상태에서 set만 내림차순으로 바꿔주는것
              // map.descendingKeySet().forEach(k->System.out.println(k + " = " + map.get(k)));
                
              // map.descendingMap() : map자체를 내림차순 되는 맵으로 바꿔준다
              map.descendingMap().forEach((k,v)->System.out.println(k + "=" + v));
          }
    
      }
    

    ▶ Map HashMap,TreeMap 이용 객체생성,내림차순,오름차순 정렬 정리

    • map 객체 생성 : HashMap 이용
    • map 객체 생성 : TreeMap 이용
    • map 객체 생성 : SortedMap 이용
      • SortedMap 기본 : 키(key)중심으로 오름차순 정렬 된다
    • map 객체 생성 : NavigableMap 이용
      • NavigableMap 기본 : 키(key)중심으로 오름차순 정렬 된다 💡 SortedMap 위에 NavigableMap 이 있다 💡 SortedMap , NavigableMap : 기본 오름차순 정렬
    • .descendingKeySet() : map 은 오름차순이 유지된 상태에서 set만 내림차순으로 바꿔주는것
    • .descendingMap() : map자체를 내림차순 되는 맵으로 바꿔준다

💢 Map 요소 일부분 추출

  • 코드
      package com.javateam.jse;
    
      import java.util.HashMap;
      import java.util.Iterator;
      import java.util.Map;
      import java.util.Map.Entry;
      import java.util.NavigableMap;
      import java.util.Set;
      import java.util.SortedMap;
      import java.util.TreeMap;
    
      public class JavaEx57 {
    
          public static void main(String[] args) {
    
              // NavigableMap 기본 : 키(key)중심으로 오름차순 정렬 된다
              NavigableMap<String,String> map = new TreeMap<>();
    
              // 요소 추가
              map.put("신당","떡볶이");
              map.put("무교", "낙지볶음");
              map.put("신림", "순대");
              map.put("마장","육고기");
              map.put("응암", "감자탕");
              map.put("마포", "갈비");
              map.put("장충", "족발");
              map.put("의정부", "부대찌개");
              map.put("노량진", "회");
              map.put("무교", "설렁탕");
                
              // 일부분 추출
              // subMap 이용 
              // 장충(마지막 기준 키값) 포함 안돼서 출력된다
              // map.subMap("마포", "장충").forEach((k,v)->System.out.println(k + "= " + v));
    
              // 장충(마지막 기준 키값) 포함해서 출력하려면 true 사용 
              // map.subMap("마포",true, "장충",true).forEach((k,v)->System.out.println(k + "= " + v));
                
              // headMap : 기준 키값 앞에 있는값 가져온다
              // map.headMap("마포").forEach((k,v)->System.out.println(k + "= " + v));
              // 기준 키값 포함해서 앞에 있는값 가져온다
              //map.headMap("마포",true).forEach((k,v)->System.out.println(k + "= " + v));
    
              // 기준 키값 뒤에 있는값 가져온다
              map.tailMap("마포").forEach((k,v)->System.out.println(k + "= " + v));			
          }
      }
    

    ▶ Map 요소 일부분 추출 정리

    • 일부분 추출 1) .subMap(시작 기준key값, 마지막 기준key값) : 마지막 기준 키값 포함 안돼서 출력된다 -> 마지막 기준 키값 포함해서 출력하려면 true 사용 2) .headMap(기준key값) : 기준 키값 앞에 있는값 가져온다 : 기준 키 값 포함 안돼서 출력 -> true 사용 3) .tailMap(기준 key값) : 기준 키값 뒤에 있는값 가져온다

💢 Map 요소 中 key값,value값 따로출력,요소 존재여부 확인,요소 삭제,여러요소 삽입

  • 코드
      package com.javateam.jse;
    
      import java.util.HashMap;
      import java.util.Iterator;
      import java.util.Map;
      import java.util.Map.Entry;
      import java.util.NavigableMap;
      import java.util.Set;
      import java.util.SortedMap;
      import java.util.TreeMap;
    
      public class JavaEx58 {
    
          public static void main(String[] args) {
    
              // NavigableMap 기본 : 키(key)중심으로 오름차순 정렬 된다
              NavigableMap<String,String> map = new TreeMap<>();
    
              // 요소 추가
              map.put("신당","떡볶이");
              map.put("무교", "낙지볶음");
              map.put("신림", "순대");
              map.put("마장","육고기");
              map.put("응암", "감자탕");
              map.put("마포", "갈비");
              map.put("장충", "족발");
              map.put("의정부", "부대찌개");
              map.put("노량진", "회");
              map.put("무교", "설렁탕");
                
              // .keySet() : key들만 출력
              //map.keySet().forEach(System.out::println);
                
              // .values() : value들만 출력
              //map.values().forEach(System.out::println);
                
              // .containsKey() : key 존재 여부 확인 -> true,false로 출력
              //System.out.println(map.containsKey("노량진"));
                
              // .containsValue : value 존재 여부 확인 -> true,false로 출력
              //System.out.println(map.containsValue("순대"));
                
              // 첫/마지막 요소 키 출력
              //System.out.println(map.firstKey());
              //System.out.println(map.lastKey());
                
              // .remove() : key 삭제
              //map.remove("노량진");
              //map.forEach((k,v)->System.out.println(k + " = " + v));
                
                
              // 여러 요소 삽입
              // putAll : map에 다른 map을 넣는것
              Map<String,String> map2 = new TreeMap<>();
              map2.put("수원","통닭");
              map2.put("우리집","집밥");
                
              map.putAll(map2); // map 에 map2를 넣는다
              map.forEach((k,v)->System.out.println(k + " = " + v));
    
          }
    
      }
    

    ▶ Map 요소 中 key값,value값 따로출력,요소 존재여부 확인,요소 삭제,여러요소 삽입 정리

    • .keySet() : key들만 출력
    • .values() : value들만 출력
    • .containsKey() : key 존재 여부 확인 -> true,false로 출력
    • .containsValue : value 존재 여부 확인 -> true,false로 출력
    • .firstKey(),.lastKey() : 첫/마지막 요소 키 출력
    • .remove(key값) : key 삭제
    • .putAll(삽입할 map) : : map에 다른 map을 넣는것

✔ LIFO와 FIFO 컬렉션

- Stack : 후입선출(LIFO)을 구현한 클래스
- Queue : 선입선출(FIFO)에 필요한 메소드를 정의한 인터페이스 -> 구현클래스로 LinkedList가 있다

LIFO1 stack queue



Share Tweet +1