컬렉션: 객체를 모아둔 것, 다수의 데이터
프레임웍: 만들어진 것을 가져다 씀, 표준화된 프로그래밍 방식
컬렉션 프레임웍의 핵심 인터페이스
List: 순서O 중복O
Stack: 후입선출, 밑이 막힌 상자, 배열과 비슷한 구조, Vector를 상속받아 구현
Queue: 선입선출, 줄서기, LinkedList와 비슷한 구조(LinkedList가 Queue인터페이스 구현)
: 배열을 다루는데 유용한 메서드가 많음
Comparator : 정렬할 때 기준찾음 , 기본 그외
Comparble: 기본 정렬 기준
Set: 순서 X 중복X
Map(딕셔너리): 순서X , 중복(키X,값O)
탐색 방법 2가지
: 파일 읽고 쓰기 할 때
: 컬렉션을 위한 메서드 제공 ex)동기화 메서드
: 클래스나 메서드를 선언할 때, 실제 사용할 타입을 나중에 지정할 수 있도록 함, 타입체크를 해주는 기능
장점
Object를 쓰는 문제점
Box b = new Box();
b.set("Hello");
Integer i = (Integer) b.get(); // ❗ 런타임 오류!
class Box<T>{
private T item;
public void set(T item) { this.item = item; }
public T get() { return item; }
}
Box 클래스 객체를 생성할 때 실제 타입 지정
Box<String> b = new Box<>();
b.set("Hello");
System.out.println(b.get()); // Hello
참조변수와 생성자에 대입된 타입(매개변수화된 타입)이 일치해야 함
Box<Apple> appleBox = new Box<Apple>();
Box<Apple> appleBox = new fruitBox<Apple>(); //다형성, 가능함
지네릭 타입에 extends를 사용하면 특정타입의 자손들만 대입 할 수 있게 제한
<? extends T>
: 와일드 카드의 상한 제한, T와 그 자손들만 가능
<? super T>
: 와일드 카드의 하한 제한, T와 그 조상들만 가능
<?>
:제한 없음, 모든 타입 가능, <? extends object> 와 동일
< T>를 메서드 선언 앞에 붙인다
호출 시 타입을 추론해서 처리함
Box<Object> o = new Box<String>(); // 안됨
Box<?> wildcard = new Box<String>(); // 와일드카드 사용시 가능
: 서로 관련된 상수를 편리하게 선언하기 위한 것
enum 열거형이름{상수명1, 상수명2,...}
enum Direction {
EAST(1), SOUTH(5), WEST(-1),NORTH(10);
private final int value; //정수를 저장할 필드(인스턴스 변수) 추가
Direction(int value){this.value=value;}//생성자 추가
public int getValue(){return value;}
}
열거형은 객체이다
모든 열거형은 추상 클래스 Enum의 자손이다
: 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것
: 애너테이션을 위한 애너테이션, 애너테이션에 붙이는 애너테이션으로 애너테이션을 정의할 때 애너테이션의 적용대상이나 유지기간등을 지정하는데 사용된다
@interface 애너테이션 이름{
타입 요소이름(); //애너테이션의 요소를 선언한다
}
애너테이션의 요소: 애너테이션 내에 선언된 메서드를 말한다
규칙