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도 인터페이스다.