#열거형(Enum)
- 서로 연관된 상수(변하지 않는 값)들의 집합.
- 한정된 상수들의 데이터를 다르는 데 사용.
- switch문과 함께 사용.
enum Height { TALL, MEDIUM, SHORT } // 상수는 대문자로 작성, 각 상수는 자동으로 정수값 할당
public class EnumExample {
public static void main(String[] args) {
Height myHeight = Height.MEDIUM; // 열거형이름.상수명 을 통해 선언된 상수에 접근.
System.out.println(myHeight); // 출력값: MEDIUM
Height height = Height.SHORT;
switch(Height) {
case TALL:
System.out.println("큰 키")
break;
case MEDIUM:
System.out.println("중간 키")
break;
case Short:
System.out.println("작은 키")
break;
} //출력값 작은 키
}
}
- 열거형 메서드
메서드(매개변수) / 리턴 타입 | 설명 |
name() / String | 열거 객체가 가지고 있는 문자열을 리턴. 리턴되는 문자열은 열거타입을 정의할 때 사용한 상수 이름과 동일. |
ordinal() / int | 열거 객체의 순번(0부터 시작)을 리턴 |
compareTo(비교값) / int | 주어진 매개 값과 비교하여 순번 차이를 리턴 |
valueOf(String name) / 열거 타입 | 주어진 문자열의 열거 객체를 리턴 |
values() / 열거 배열 | 모든 열거 객체들을 배열로 리턴 |
#제네릭
- 클래스와 메서드의 타입을 일반화해 둔 것.
- 타입매개변수(타입파라미터)를 철자(T, K, V, E, N, R 등)으로 치환하여 선언.
- static이 붙은 변수와 메서드와는 사용할 수 없다.
- 타입매개변수에 치환될 타입으로 기본 타입 사용 불가능
- 타입매개변수에 상속받은 클래스를 타입으로 지정 가능.(제한된 제네릭 클래스)
- 제네릭 클래스에서 다형성 적용 가능(상속 가능)
#제네릭 메서드
- 클래스 내부 특정 메서드만 제너릭으로 선언된 것.
- 제네릭 메서드의 타입매개변수 선언은 반환타입 앞에서 이루어짐. (해당 메서드 내 선언된 타입매개변수 사용)
- 제네릭 메서드의 타입매개변수는 제네릭 클래스의 타입매개변수와 구별됨.
- 메서드 타입매개변수는 static메서드에서 사용가능.
#와일드카드
- 어떠한 타입으로든 대체될 수 있는 타입 파라미터.
- 기호 ?으로 사용
- extends와 super를 함께 사용한다.
- extends는 상한 제한, super는 하한 제한을 설정할 때 사용됨.
#예외 처리 클래스
- 프로그램의 에러 처리를 위한 클래스.
- 일반 예외 클래스(Exception)과 실행 예외 클래스(Runtime Exception)이 있음
- try-catch문으로 예외를 처리를 함.
- throws를 통해 예외 전가를 할 수 있음.
- throw으로 의도적으로 예외를 발생시킬 수 있음.
#컬렉션 프레임워크
- 여러 데이터의 집합인 컬렉션을 다르기 위한 메서드들의 집합.
Colletcion | List | LinkedList |
Stack | ||
Vector | ||
ArrayList | ||
Set | HashSet | |
SortedSet | ||
Map | Hashtable | TreeSet |
HashMap | ||
SortedMap | TreeMap |
(1) List
▪ 순서 유지, 중복 저장 가능
▪ ArrayList, Vector, Stack, LinkedList
(2) Set
▪ 순서 유지 X, 중복 저장 불가능
▪ HashSet, TreeSet
(3) Map
▪ 키(key)와 값(value)으로 데이터를 저장
▪ 키는 값의 식별하기 위해 사용되어 중복 저장 X. 값은 중복 저장 가능
▪ HashMap, HashTable, TreeMap, Properties
#List
- 객체를 일렬로 늘어놓은 구조.
- 인덱스로 객체를 검색, 추가, 삭제 가능
#ArrayList
- 인덱스로 겍체를 관리, 그러나 List와 달리 배열의 크기가 변할 수 있다.
- 데이터의 순서가 유지됨.
#LinkedList
- 데이터의 불연속적 존재.
- 데이터의 연결이 링크로 되어 있어서, 데이터의 변경이 있을 때 링크가 재설정됨.
#ArrayList와 LinkedList의 비교
ArrayList | LinkedList |
순차적으로 데이터를 추가하거나 삭제할 때 유리 | 객체를 중간에 추가하거나 삭제할 때 유리 |
자료 검색 속도 빠름(인덱스로 접근) | 자료 검색 속도 느림 |
복습을 하면서 제네릭에 대한 이해가 부족함을 느꼈다. List는 풀고 바로 알고리즘 문제에서 활용하여 이해가 됬지만 실제 코드에서 사용하지 않다보니, 머릿속에서만 이해가 되어 부족했던거 같다.
제네릭에 대한 복습을 더 해야겟다!
'개발지 > 회고' 카테고리의 다른 글
23년 코테 문제 회고 (0) | 2023.12.26 |
---|---|
[0808] 8월 1주 주간학습 회고 (0731) (0) | 2023.08.08 |
[0730] 7월 5주 주간학습 회고 (0) | 2023.07.31 |
[0723] 7월 4주 주간학습 회고 (0) | 2023.07.29 |