1. 배열(Array) ( 비유: 냉장고 )
같은 타입의 데이터 '저장소'로써 생성될 때 크기가 고정되는 '객체'
(1) 선언
type 배열변수[]; //ex) String items[];
(2) 생성
배열변수 = new type[크기]; //ex) items = new String[4];
(3) 초기화
배열변수[인덱스] = 데이터; //ex) items[0] = "봄";
(4) 선언 및 생성
type 배열변수[] = new type[크기]; //ex) String items[] = new String[4];
(5) 선언 및 생성 및 초기화
type 배열변수[] = {데이터1, 데이터2, ...};
//ex) String items[] = {"봄", "여름", "가을", "겨울"};
(6) 배열의 default 값
- byte, short, char, int: 0
- long: 0L
- float: 0.0f
- double: 0.0
- boolean: false
- 참조형: null
(7) 형변환
형변환이 가능한 데이터라면 형변환되어져서 입력 됨
//ex) int is[] = {b, s, c, i, (int)f};
(8) 이차원
일차원 배열을 데이터로 갖는 배열
(9) N차원
(N-1)차원을 배열을 데이터로 갖는 배열
2. 컬렉션(Collection)계열 ( 가변배열 == 자료구조(Data Structure) )
같은 타입의 '참조형'데이터 '저장소'로써 그 크기가 변할 수 있는 '객체'
(1) 종류
* 인터페이스는 자기 자신을 쓰는게 아니라 자식을 쓰는 개념
1) java.util.Collection
| |
java.util.List java.util.Set
| |
..... .....
2) java.util.Map
|
java.util.Hashtable, ....
(2) 특징
1) List
- 중복을 허용
- 순서를 보존
* 배열하고 상당히 유사하나, 집어넣으면 집어넣을 수록 사이즈가 커짐, 이게 바로 가변 배열이기 때문
2) Set ( 비유: 집합 )
- 중복을 허용 X
- 순서를 보존 X
* 정렬(sorting) 기능 사용 시 강력하다
3) Map ( 비유: 1:1 함수 )
- 한쌍으로 저장(key와 value)
- 순서를 보존 X
- key는 중복허용X, value는 중복허용O
cf) AutoBoxing: ( 기본형 -> Wrapper class )
사람의 기억은 이미지로 저장된다. 따라서, 시간이 빠르게 가는 것 같은 이유는 새로운 경험이 없을 때는 이미지를 자주 저장하지 않기 때문이다. 시간을 조금 더 효율적으로 사용하고, 느리게 가게 하고 싶다면 새로운 경험, 새로운 장소를 가서 이미지의 갯수를 늘리는것이 중요하다.
제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미한다. 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 가변 배열에서만 사용된다. JDK5 이상에서만 사용 가능하다.TreeSet은 HashSet과 마찬가지로 Set 인터페이스를 구현한 클래스로써 객체를 중복해서 저장할 수 없고 저장 순서가 유지되지 않는다는 Set의 성질을 그대로 가지고 있다.Vector는 ArrayList 클래스와 같이 컬렉션 프레임웍에서 가장 많이 사용되는 컬렉션 클래스이며, List 인터페이스의 특징인 저장순서를 유지하며, 중복을 허용하는 특징을 가지고 있다.Hashtable은 HashMap은 Map 컬렉션으로서 키(key)와 값(value)으로 구성된 객체를 저장하는 구조를 가지고 있는 자료구조이다. 키는 중복으로 저장할 수 없고 값은 중복으로 저장할 수 있다. Map도 인터페이스다.