** Data Structure(자료구조)
- data 를 어떻게 저장할 것인가?
- data 는 되도록 하나의 이름으로 사용할 수 있도록 해야한다.
- Data의 구분
1. Scala : 데이터가 명확하게 1개인것
1) Boolean[boolean] : true || false
2) Byte[byte] : 정수지만 이것은 통신할 때 사용함. (file & network : 읽고 쓰는 방법이 같고 대상만 다르다)
3) Short[short] : 정수
4) Character[char] : 정수지만 문자 1개를 저장할 때 사용함.
5) Integer[int] : 정수
6) Long[long] : 정수
7) Float[float] : 실수
8) Double[double] : 실수
-------------------↓쪼개서 사용할 수 있다.
9) String : 문자열
10) Date : 날짜 & 시간
2. Vector : 데이터가 0개 이상 될 수 있는 것
1) 동등한 레벨의 데이터 : 비교해서 순위를 매길 수 있는 데이터
(1) 배열
(2) List
(3) Set
배열 |
List |
Set |
|
크기 | 크기 변경이 불가능 |
크기 변경이 가능 |
크기 변경이 가능 |
메모리 | 메모리 낭비가 없음(크기 정한만큼만) | 메모리 낭비 발생(기본 16개) | 메모리 낭비 발생(해싱으로 저장) |
데이터 조회 | 빠른 열거 & 인덱스 | 빠른 열거 & 인덱스 | 빠른 열거(인덱스X) |
삽입 & 삭제 | 삽입 삭제가 어려움 | 삽입과 삭제 가능 | 중복된 데이터는 삽입이 안 됨 |
검색 속도 | List 보다는 빠름 | 제일 느림 |
2) 동등하지 않은 레벨의 데이터 : 비교해서 순위를 매길 수 없는 데이터
(1) Map
(2) VO Class(=DTO)
Map |
VO |
|
저장 방법 | key와 value를 쌍으로 저장 |
미리 이름을 만들어 놓고 저장 |
데이터 확장 | 데이터 개수의 확장이 쉽다 | 확장을 하려면 이름을 다시 만들어야 함 |
저장 속도 | 저장 속도가 VO 보다 느리다 | 데이터 저장 속도가 Map보다 빠르다 |
이름 | key를 기억해야 한다.(nullPointException 에러가 많이 난다) | IDE에서 코드센스의 도움을 받을 수 있다(.을 입력하면 이름이 보임) |
Table에 있는 데이터의 개수 -> 데이터를 1개로 주므로 Scala - int 나 long Table에 있는 name을 전부 찾음 -> name 여러개으므로 Vector / 이름으로는 줄을 세울 수 있으므로 동등한 레벨의 데이터 자료구조 중에 하나 선택 - 배열, List, Set Table에서 name 과 age를 전부 조회 -> name도 여러개 age도 여러개 이런 경우 가로를 먼저 묶고 다시 묶어주면 됨. name : age 는 서로 비교하지 않으므로 동등하지 않은 레벨의 데이터의 자료구조 중 하나 선택 - Map, VO Class |
- 주소를 계산하는 방법. 인덱스를 붙이는 것이 아니라 나름의 규칙을 만들어서 저장한다. ex) 9,7,5 -> mod3(계산을 해서 바로 찾아감=접근속도가 모두 똑같음) [본문으로]
'JAVA 공책 > 수업 메모' 카테고리의 다른 글
Thread (0) | 2018.09.11 |
---|---|
List (0) | 2018.09.04 |
StringBuilder (0) | 2018.08.30 |
String 클래스 (0) | 2018.08.29 |
java lang 패키지 (0) | 2018.08.28 |