full stack/์๋๋ก์ด๋
[Android] ์๋ฃ๊ตฌ์กฐ (2023.07.14)
Shinjio
2023. 7. 14. 17:19
๋ฐ์ํ
์๋ฃ๊ตฌ์กฐ
์๋ฃ๊ตฌ์กฐ : ๊ฐ(Data)๋ ์์ (Process)๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์
List(๋ฐฐ์ด)
- ์์ฐจ์ (์ธ๋ฑ์ค)
- ์ ํ ๊ตฌ์กฐ
Stack
- ํ์ชฝ์ด ๋งํ์๋ ๊ตฌ์กฐ
- ์ ์ ํ์ถ
- ์ ํ ๊ตฌ์กฐ
- ์ฃผ๋ก ์ ์ฅํ๋ ์ฉ๋
Queue
- ์์ชฝ์ด ๋ซ๋ ค์๋ ๊ตฌ์กฐ
- ๋ค์ด๊ฐ๋ ๊ณณ์ผ๋ก๋ ๋์ฌ ์ ์๋ค
- ์ ์ ์ ์ถ
- ์ฃผ๋ก ๋ฐ์ดํฐ ์ ์ก์ ์ฌ์ฉ (๋จ๋ฐฉํฅ ์ ์ก) → ์ ์ก์ฉ Queue๋ฅผ stream์ด๋ผ๊ณ ๋ถ๋ฆ (Input stream, Output stream ๋ฐ๋ก ์กด์ฌ → I/O)
- ์ ํ ๊ตฌ์กฐ
์ ํ๊ตฌ์กฐ ํน์ง
๋ฐ์ดํฐ ์ถ๊ฐ/์ญ์ ์ ๋ถ๋ฆฌ
๋ฐ์ดํฐ ์ฝ์ ์ ๋ฆฌ์คํธ๋ฅผ ๋ณต์ฌ, ์์๋ก ์ ์ฅํ ๋ฆฌ์คํธ๊ฐ ํ์ → ๋ฉ๋ชจ๋ฆฌ ์๋ชจ๊ฐ ํฌ๊ณ ์๋๊ฐ ๋๋ฆฌ๋ค์ด๋ฌํ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋์จ ์๋ฃ ๊ตฌ์กฐ → Linked List
๋งํฌ๋ฅผ ๋๊ณ ๋ฐ์ดํฐ ์ฝ์ ํ ๋ค์ ์ฐ๊ฒฐ → ๋ฐ์ดํฐ ์ถ๊ฐ/์ญ์ ์ ์ฉ์ด
stream
Buffer์ ์ผ์ ๋ฐ์ดํฐ๊ฐ ์์์๋ (buffering) pop
๋ฒํผ๋ง์ด ๋๋ฆฌ๋ค → ํต์ ์๋๊ฐ ๋๋ฆฌ๋ค → push๊ฐ ๋๋ฆฌ๋ค
** ์ฌ์ง ์ ์ก ์๋ฆฌ
์ฌ์ง์ Bit ๋จ์๋ก ์ชผ๊ฐฌ (8bit = 1byte)
→ btm(๋นํธ๋งต ํ์ฅ์) : ํ์ผ ์ ์ก์ฉ ํ์ฅ์
→ ์ฌ์ง์ด byte ๋ฐฐ์ด๋ก ๋ณํ (byte [])๋์ด ๋ฆฌ์คํธ ๊ตฌ์กฐ๋ก ๋ฐ๋์ด Queue๋ฅผ ํตํด ์ ์ก ๊ฐ๋ฅ
์๋ฒ์ ์ฌ์ง์ ์ ์ฅ ํ ์๋๋ก์ด๋์์ ๋ถ๋ฌ์ค๊ณ ์ถ์ ๋ ํน์ ์๋๋ก์ด๋์์ ์๋ฒ๋ก ์ฌ์ง ์ ์กํ๊ณ ์ถ์ ๋
→ ๋นํธ๋งต์ผ๋ก ์ฌ์ง ๋ณํํด์ ์ ์กํด์ผ ํจ
Map
- ์์ ์์ → ์ ๋ ฌํ ์ ์์
- key-value ์์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ → value์ ์ ๊ทผํ๊ณ ์ ํ ๋ key๋ก ๊บผ๋
- JSON, parameter(QueryString)
- ๊ฒ์์ ์ฉ์ด
- ๋ฐ์ดํฐ ์ถ๊ฐ, ์ญ์ ์ ์ฉ์ด
- ํค ์ค๋ณต ๋ถ๊ฐ, ๋์ผํ key๊ฐ์ put ํ๋ฉด ๊ฐฑ์ (์์ )์ด ์ผ์ด๋จ → ์ค๋ณต์ด ์๋ ํํ๋ก set์ด๋ผ๊ณ ๋ ํจ
- ๋ฐ์ดํฐ ์ ์ฅ์ฉ
Tree
- ๋ฐ์ดํฐ ์ ์ฅ์ฉ → ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ์ ์ฅํ ๋ ์ฌ์ฉ
- ex. ํด๋๊ตฌ์กฐ
- ํ์๋ ธ๋๊ฐ ์ต๋ 2๊ฐ๊น์ง๋ง ํ์ฉํ๋ ๊ฒ → ์ด์งํธ๋ฆฌ
๋ฐ์ํ