본문 바로가기

JAVA 공책/수업 메모

Data Structure(자료구조)

** 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) 배열

[분류 전체보기] - 배열(Arrays)

(2) List

[JAVA 공책/수업 메모] - List

(3) Set

 

 배열

 List

 Set

 크기

 크기 변경이 불가능

 크기 변경이 가능

 크기 변경이 가능

 메모리

 메모리 낭비가 없음(크기 정한만큼만)

 메모리 낭비 발생(기본 16개)

 메모리 낭비 발생(해싱으로 저장)
 데이터 조회

 빠른 열거 & 인덱스

 빠른 열거 & 인덱스

 빠른 열거(인덱스X)

 삽입 & 삭제

 삽입 삭제가 어려움

 삽입과 삭제 가능

 중복된 데이터는 삽입이 안 됨

 검색 속도

 List 보다는 빠름

 제일 느림

 제일 빠름(해싱[각주:1]을 이용)


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


  1. 주소를 계산하는 방법. 인덱스를 붙이는 것이 아니라 나름의 규칙을 만들어서 저장한다. 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