1) 변수 : 한가지 타입에 한가지 값만 저장
2) 배열 : 한가지 타입에 여러개의 값을 저장
데이터조작에 불편하다(삽입, 삭제, 수정,검색)
배열은 사이즈가 변경될수 없다!!
: 데이터를 저장하는 구조, Collection Framework
: 각 인터페이스들의 구현클래스 제공
1) List : 순서(index) 있고 중복 가능. (직접 사용 X)
구현객체제공(class) - ArrayList, Vector, LinkedList,....
2) Set : 순서 없고, 중복 안됨.
구현객체 - HashSet,
TreeSet : element를 정렬(Sorting)해준다
3) Map : key와 value의 한쌍으로 이루어지며
key는 중복안되고 value는 중복가능하다 (Entry Set)
구현객체 - HashMap, Hashtable, TreeMap, Properties...
자바는 primitiveType 8가지를 객체로 변환해주는 Wrapper클래스를 제공한다! - java.lang.
~.add(Object obj)
Object obj = ~.get(int index)
int size = ~.size();
remove(int index); - index는 0부터 시작
remove(Object obj);
Interface Comparable<T>
: int compareTo(T o)
Parameters:
o - the object to be compared.
Returns:
a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
ex) 자신(기준)과 인수 비교시
결과 : 음수 이면 인수가 크다.
0이면 자신과 인수가 같다.
양수이면 자신이 크다
ex)사원번호 기준 정렬
자신.사원번호 - 인수.사원번호
5-2 = 3 ? : 양수
5 - 5 : 0
Comparable의 compareTo는 자기 자신과 매개변수를 비교한다고 했고,
compareTo는 정수를 반환하며, 자기 자신을 기준으로 상대방과의 차이 값을 비교하여 반환함.
Interface Comparator<T>
: 메소드가 많지만 대부분 static, default
: int compare(T o1, T o2)
Parameters:
o1 - the first object to be compared.
o2 - the second object to be compared.
Returns:
a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
자신 안에서 자기자신 호출 ,
무한루프가 돌기 때문에 재귀를 빠져나갈 수 있는 코드를 작성해줘야함
public void test(){
기능;
test(); 재귀
}
stacl 영역에 쌓이기 떄문에 많이 도는게 단점
정해져있는 룰대로 값들이 정해져있기 때문에 값들의 모호한 변화가 극소수
stackoverflow 발생 시 메모리를 차지하더라도 반복문 사용
-> 반복문
: heap 영역에 데이터가 쌓이고
: 코드 작성시 i 값들의 변화가 재귀함수보다 많음
자바의 메소드들은 스택에 쌓이면서 순서대로 호출