코드스테이츠 Day16
<컬렉션(Collection)>
- 열거형(Enum)
- 연관된 상수들을 모아놓는 집합.
- switch문의 조건()에서도 사용 가능.
- 상수명 중복 회피 가능.
- public static final같은 거 안 써도 돼서 코드의 가독성 높임.
- 제네릭(Generic)
- 타입을 포괄적으로 (미)지정하여(==일반화하여) < T > , 하나의 클래스로 다양한 타입의 객체 생성 가능.
- 타입 매개변수에 클래스 타입만 쓸 수 있음(매개변수로 객체가 필요해서). 변수 기본 타입X
https://velog.io/@hadoyaji/int%EC%99%80-Integer%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B4-%EB%8B%A4%EB%A5%B8%EA%B0%80
- 클래스명<타입> 변수명 = new 클래스명<>();
- 클래스 변수(=static)는 클래스 내에서 동일한 값을 공유하므로, 제네릭 타입 매개변수 < T > 사용 못 함.
- 타입 매개변수에 다형성 적용 가능. extends, implements로 클래스 범위 한정 및 확장.
- 제네릭 메서드도 있다. 반환 타입 앞에 타입 매개변수 넣으면 됨. static도 가능. 얘는 그냥 클래스 안에서만 메서드를 쓴다는 얘기라서 클래스 변수랑 다름.
- 와일드 카드 : 메서드의 매개변수에서 타입 다음에 < ? extends T >, < ? super T > 를 써서, 클래스 범위를 제한할 수 있다. ~하위 클래스만. ~ 상위 클래스만.
- 예외 처리(Exception Handling)
- 컬렉션 프레임워크(Collection Framework)
- 여러 데이터의 집합(컬렉션)을 다루기 쉽게 메서드를 모아놓은 것.
- 컬렉션 프레임워크의 주요 인터페이스
- ArrayList : list 순서 있고, 차례로 -- 순차적 데이터 처리에 좋음
- LinkedList : list 순서 있고, 연결로 -- 중간 데이터 추가/삭제 쉬움
- HashSet : set 순서 없고, 중복 비허용
- TreeSet : set 순서 없고, 중복 비허용, 노드 숫자 따라 오름차순 정렬됨
- HashMap
- key객체와 value객체로 이루어진 entry객체로 구성됨. key는 중복 불가능.
- 쌍으로 구성된 엔트리이므로 반복자(iterator())호출 불가.
- 따라서, ketSet() or entrySet()을 통해 Set 형태의 Map.Entry<String, Integer> 객체를 만들어서 반복자 호출.
- 기타 정리한 것들
<느낀 점>
개강 후 3주 정도가 되었다.
오늘 뭔가 학습 관련 고민 상담을 받은 수강생들이 많았는지, 오후 줌 미팅에서 공부법 관련한 이야기를 들었다.
프로그래밍 공부에서 블로깅은 맨 마지막이고 혼자서 활용해보고 실습하는 시간이 더 먼저라고 들었는데, 블로깅 포기 못 해...
대부분 가져다 쓰는 거라도, 다시 보면서 내가 생각하기에 중요한 내용만 추려서 정리하면 훨씬 머리에 남는 기분이기 때문이다.
오늘 공부한 내용 중 HashMap은 파이썬의 딕셔너리와 비슷한 느낌이었다. 하지만 파이썬보다 뭔가 훨씬 복잡해,,
HashMap의 반복자 만드는 부분에서 반복자 호출을 위해 Set 형태의 객체를 만들 때, Set의 타입 매개변수를 Map.Entry<String, Integer> 이렇게 쓰는 게 이해되지 않았다.
근데 다시 쭉 코드를 읽어보니 HashMap<String, Integer> 이렇게 썼던 걸, Map.Entry<String, Integer>라고 쓰는 느낌.
어쨌든 내용은 HashMap의 Entry 객체를 Set의 타입 매개변수로 가져와서 Set 객체를 만들겠다는 소리였다.
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();