혼공학습단

[혼공학습단7기] 5주차 기본 미션, 선택 미션

Kimpeep 2022. 2. 20. 23:20

01. 기본 미션 : 직접 정리한 키워드 공유하기


컬렉션 프레임워크

☀ 널리 알려진 자료구조를 이용하여 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 java.util 패키지에서 제공하는 인터페이스와 구현 클래스

프레임워크 : 사용 방법을 정해 놓은 라이브러리를 의미함

컬렉션 : 객체의 저장을 뜻함

 

List 컬렉션

☀ 배열과 비슷하게 객체를 인덱스로 관리, 배열과 차이점으로는 용량이 동적으로 변경된다는 것.

- 컬렉션 인터페이스 중 하나

- ArrayList, Vector, LinkedList

- 크기 조절이 가능함

- 초기 크기를 지정하지 않아도 됨

- 삭제는 즉 공간을 지우는 것

 

Set 컬렉션

☀ 저장 순서가 유지되지 않으며, 객체 중복 저장이 불가능하며 한 개의 null만 저장할 수 있음

- 변수/리턴 타입이 E라는 타입 파라미터가 존재함 ==> 제네릭 타입이기 때문

- HashSet, LinkedHashSet, TreeSet

 

 

Map 컬렉션

☀ 키와 값으로 구성된 Map.Entry 객체를 저장하는 구조를 갖고 있음

- Entry == Map 인터페이스 내부에 선언된 중첩 인터페이스

- 키, 값 모두 객체

- HashMap, Hashtable, LinkedHashMap, Properties, TreeMap

 

LIFO, FIFO 컬렉션

☀ LIFO == Last In First Out, 나중에 넣은 객체가 먼저 빠져나감
☀ FIFO == First In First Out, 먼저 넣은 객체가 먼저 빠져나감

Stack : LIFO, push(E item), peek(), pop() 등의 메서드를 사용함

Queue : FIFO, offer(E e), peek(), pop() 등의 메서드를 사용함 // LinkedList 구현 가능 

 

 

02. 선택 미션 : p. 573 [직접 해보는 손코딩] 코딩 과정 및 실행 결과 캡쳐하기


HashMapExample.java
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class HashMapExample {
    public static void main(String[] args){
        /* [HashMap] implements Map
		 * 
		 * - 키(key) 객체, 값(Value) 객체로 구성된 Map.Entry 객체를 저장하는 구조
		 * 	 : Entry 는 Map 인터페이스 내부에 선언 된 중첩 인터페이스 
		 * 
		 *  - 키(key)는 중복 저장 될 수 없지만 값은 중복 저장 가능 
		 */

        //Map 컬렉션 생성
        Map<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());
        
        //객체 찾기
        System.out.println("\t홍길동 : " +map.get("홍길동"));
        System.out.println();

		// [객체 루핑 처리] 
		
		// 1. Set<Key> 이용
		    // key 구슬들이 주머니 안에 
		// 객체를 하나씩 처리
        Set<String> keySet = map.keySet(); 
        Iterator<String> keyIterator = keySet.iterator();
        while(keyIterator.hasNext()){
            String key = keyIterator.next();  // key값 가져오기 // 타입 매개변수이름 = iterator set 매개변수 이름 . next();
            Integer value = map.get(key); // value 값 가져오기
            System.out.println("\t"+key+" : " + value);
        }
        System.out.println();
        // 객체 삭제
        map.remove("홍길동");
        System.out.println("총 Entry 수: " + map.size());

        // 2. Set<Map.Entry> 이용
		// map.entry구슬들이 주머니 안에 
		// 객체를 하나씩 처리
        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
        Iterator<Map.Entry<String, Integer>> entryIterator = entrySet.iterator();

        while(entryIterator.hasNext()){ 
            Map.Entry<String, Integer> entry = entryIterator.next(); // Map.Entry에서 하나 꺼내오기
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println("\t" + key + " :" + value);
        }
        
        System.out.println();
        // 객체 전체 삭제
        map.clear();
        }
    }

결과 출력 화면

이번에는 나름의 풀이를 코드 속에 녹여내려고 노력해 보았습니다.

직관적으로 적는 게 이후 이해할 때 더 도움이 되더라고요!


BOJ 풀이를 시작했습니다... 개강 전까지 solved.ac 랭크를 골드 5 이상으로 올리는 것이 목표입니다. (현재 실버 2)

함께 공부하는 알고리즘도 열어 주시면 안 되나요? 혼자 하니까 정말... 너무너무 풀기 싫은 BOJ...

이코테랑 함께하는~ 스터디 그룹~^^ 같은 거 만들어 주시면 저 정말 최선을 다해 공부할게요...

(이래놓고 또 하기 싫어서 빈둥거리겠지)

벌써 혼공단이 1주밖에 안 남았네요...~ 개강도 1주밖에 안 남았다는 사실이겠죠?

이번 방학도 혼공단과 함께여서 행복했습니다... 다음 방학에도 꼬옥... 꼬옥 만나요 제발...

 

++

이건 기념하고 가야지... 우리팀 10연승 달❤성

너무 잘해 우리팀~!~!~!

이쯤되면 나도 열심히 살아야지... 이렇게 또다시 공부를 하러 갑니다... aT1os...^^