day17 - 제네릭 기법, [java API] Math, Calendar, Date, Collection Class / ArrayList<E>, Vector<E> Class
java.lang Pakage
Math Class
📑 java api 바로가기 ▸ Math
• java.lang 패키지에 있는 클래스
• 모든 메소드는 static 타입으로 바로 사용가능
✔ 주요 메소드
리턴타입 | 메소드명 | 설명 |
static double | abs(double a) | 절대값 리턴 |
static double | cos(double a) | |
static double | sin(double a) | |
static double | tan(double a) | |
static double | ceil(double a) | 올림 |
static double | floor(double a) | 내림 |
static double | random() | |
static long | round(double a) | 반올림 |
static long | sqrt(doubel a) | a의 제곱근 리턴 |
java.util Package
Calendar Class
📑 java api 바로가기 ▸ Calendar
• java.util 패키지에 있는 추상클래스
• 년, 월, 일 ,요일, 시간, 분 초, 밀리초 등 get(), set() 메소드를 이용하여 저장하거나 알아낼 수 있는 클래스
• 1970.1.1.0.0.0을 기준으로 계산해서 나옴
• 추상클래스여서 객체 생성 불가 > getInstance() 얻어서 사용 > 현재 날짜와 시간로 가져온다
✔ Calendar의 get(), set()에 사용되는 상수 (앞에 Calendar.YEAR 이렇게 클래스명 붙음)
YEAR | 년도 |
DAY_OF_MONTH | 한달의 날짜 |
MONTH | 달 ( 0 ~ 11) |
DAY_OF_WEEK | 한주의 요일 |
HOUR | 시간 ( 0 ~ 11) *12시는 0시 |
AM_PM | 오전 오후 |
HOUR_OF_DAY | 24시간을 기준으로한 시간 |
MINUTE | 분 |
SECOND | 초 |
MILLISECOND | 밀리초 ( 1000이 1초) |
✔ GregorianCalendar 클래스
1970.1.1.0.0.0 기준으로 365.25일 4년에 한번씩 윤달 있음
%100 == 0 || %4 ==0
Date class Class
📑 java api 바로가기 ▸ Date
• 단일클래스 날짜 관련 클래스
• 1900.1.1.0.0.0 기준으로 / 1970.1.1.0.0.0 기준으로
Collections Class
📑 java api 바로가기 ▸ Collections
• JDK는 소위 자료구조 과목에서 배우는 많은 자료 구조들을 컬렉션으로 만들어 제공
• 제네릭이라는 기법으로 구현
• 컬렉션은 배열이 가진 고정크기의 단점을 극복하기 위해 객체들을 쉽게 삽입, 삭제, 검색 할 수 있는 가변 크기의 컨테이너다.
• 배열 vs 컬렉션 : 가변크기로 객체 수 염려할 필요 없으며 중간 객체를 삭제시 자동으로 위치를 옮겨준다.
✔ 컬렉션을 위한 자바 인터페이스와 클래스
[ Collection 상속, 단일 클래스의 객체만 다룸]
- Vector, ArratList : 가변크기의 배열
- LinkedList : 노드들이 링크로 연결되는 리스트
- Stack : 스택
- HashSet : 집합
[ Map 상속 ]
- HashMap : 키와 값의 쌍으로 이루어진 데이터 저장하는 컬렉션
제네릭(generics) 기법
• 컬렉션은 제네릭이라는 기법으로 만들어짐. JDK 1.5부터 도입
• 컬렉션 클래스 이름에 <E> <K> <V> 등이 포함 > 타입매개변수(generic type)
💡
E : element 요소
T : type
V : value
K : key
✍🏻 ex)
Vector<Integer> > 정수만 저장하는 벡터
Vector<String> > 문자열만 저장하는 벡터
Vector > 타입 상관없이 모든 타입 저장 가능
✔ 특징
- 특정 타입만 다루지 않고 여러 종류의 타입으로 변신할 수 있도록 를 사용
- 단, int, char, double 등 기본타입으로는 제네릭 사용불가 > Integer, Character 등 객체로 제네릭 지정
> 동일한 프로그램 코드에 다양한 데이터 타입을 적용할 수 있도록 클래스와 함수들을
일반화시켜 제네릭 함수와 제넭 클래스를 만들고 그것을 이용해 개발자는 원하는 데이터 타입으로
구체화시켜 함수나 클래스 코드를 찍어내듯이 생산하는 기법
✍🏻 Ex)
class Stack<E>{
...
void push(E element) {...}
E pop() {...}
...
}
// E에 대한 구체적 타입을 지정하면, 지정된 타입만 다룰 수 있는 구체화된 스택이 된다.
// E로 써놓은 부분이 자동으로 변경됨
// 정수 스택
new Stack<Integer>();
void push(Integer element) {...}
return Integer pop(){...}
// 문자열 스택
Stack<String>
void push(String element){...}
return String pop(){...}
// 제네릭타입 생략
Stack
void push(Object element){...}
return Object pop(){...}
// > Object로 리턴되면 실제 객체에 따라 형변환 해야함
ArrayList<E> Class **자주씀
📑 java api 바로가기 ▸ ArrayList<E>
• java.util 패키지에 포함
• 가변적 배열 구조, 삽입되는 요소의 개수에 따라 자동 크기 조절
• 요소 삽입/삭제에 따라 요소들의 자리 자동 이동
✔ 주요메소드
리턴타입 | 메소드명 | 설명 |
boolean | aadd(E element) | 맨 뒤에 element 추가 |
void | add(int idx, E element) | index에 element 추가 |
void | clear() | 모든 요소 삭제 |
boolean | contains(Object o) | o를 포하하고 있으면 true 리턴 |
E | get(int idx) | idx의 요소 리턴 |
int | indexof(Object o) | o의 idx 번호 리턴 |
boolean | isEmpty() | ArrayList가 비어있으면 true |
E | remove(int idx) | index 요소 삭제 |
boolean | remove(Object o) | o와 같은 첫번째 요소 삭제 |
int | size() | ArrayList 내 요소의 개수 리턴(저장된 데이터 수) |
Object[] | toArray() | 모든 요소 포함한 배열 리턴 (배열로 변환) |
✔ 객체 생성
ArrayList<타입매개변수> 참조변수명 = new ArrayList<타입매개변수>();
Vector<E> Class
📑 java api 바로가기 ▸ Vector<E>
• java.util 패키지에 포함
• 가변적 배열 구조, ArrayList와 거의 동일
• ArrayList<E>의 차이점은 벡터는 스레드간에 동기화지원 해줌
-> 다수의 스레드가 동시에 ArrayList에 요소 삽입/ 삭제시 데이터 훼손 우려되지만 Vector는 동기화 된 상태에서 스레드들이 접근하므로 회손 안됨
✔ 주요메소드
타입 | 설명 | |
boolean | add(E element) | 맨 뒤에 element 추가 |
void | add(int idx, E element) | index에 element 추가 |
void | clear() | 모든 요소 삭제 |
boolean | contains(Object o) | o를 포하하고 있으면 true 리턴 |
E | get(int idx) | idx의 요소 리턴 |
E | elementAt(int idx) | idx의 요소 리턴 |
int | indexof(Object o) | o의 idx 번호 리턴 |
boolean | isEmpty() | Vector가 비어있으면 true |
E | remove(int idx) | index 요소 삭제 |
boolean | remove(Object o) | o와 같은 첫번째 요소 삭제 |
int | size() | Vector내 요소의 개수 리턴(저장된 데이터 수) |
Object[] | toArray() | 모든 요소 포함한 배열 리턴 (배열로 변환) |
int | catacity() | 저장 용량 리턴 |
✔ 객체 생성
Vector<타입매개변수> 참조변수명 = new Vector<타입매개변수>();