๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ/Java32

[ch.15] ์ž…์ถœ๋ ฅ I/O - ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ ByteArray I/O ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ. ์ฃผ๋กœ ๋‹ค๋ฅธ ๊ณณ์— ์ž…์ถœ๋ ฅ ํ•˜๊ธฐ ์ „์— ์ž„์‹œ๋กœ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์— ๋‹ด์•„์„œ ๋ณ€ํ™˜ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์— ์‚ฌ์šฉํ•จ. ์‚ฌ์šฉํ•˜๋Š” ์ž์›์€ ์˜ค์ง ๋ฉ”๋ชจ๋ฆฌ์ž„. GC์— ์˜ํ•ด์„œ ์ž๋™์ ์œผ๋กœ ์ž์›์ด ๋ฐ˜ํ™˜๋˜๋ฏ€๋กœ close()์‚ฌ์šฉ X. ํ•œ๋ฒˆ์— 1byte ์ฝ๊ณ ์“ฐ๊ธฐ๋งŒ ํ•ด์„œ ์ž‘์—…ํšจ์œจ์ด ๋–จ์–ด์ง. “๋ฐฐ์—ด”์ด์šฉ์‹œ ์ž…์ถœ๋ ฅ ์ž‘์—…ํšจ์œจ์ด ๋†’์•„์ง. read( )๋‚˜ write( )๊ฐ€ IOException์„ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— try-catch๋ฌธ์œผ๋กœ ๊ฐ์‹ธ์คŒ. available( ): ํ•ด๋‹น ์Šคํฌ๋ฆผ์—์„œ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ดํŠธ์˜ ์ˆ˜๋ฅผ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Œ. ์ •ํ™•ํ•œ๊ฐ’์€ X. File I/O ํŒŒ์ผ์— ์ž…์ถœ๋ ฅ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ. ์‹ค์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋งŽ์ด ์‚ฌ์šฉํ•จ. ํ…์ŠคํŠธํŒŒ์ผ์€ ๋ฌธ์ž๊ธฐ๋ฐ˜ ์Šค.. 2023. 11. 21.
[ch.15] ์ž…์ถœ๋ ฅ I/O I/O Input, Output ์ž…์ถœ๋ ฅ, ์žฅ์น˜์™€ ํ”„๋กœ๊ทธ๋žจ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ฃผ๊ณ ๋ฐ›๊ธฐ NIO๋ผ๋Š” ๊ฒƒ๋„ ์žˆ์Œ(non-blocking I/O) ์ŠคํŠธ๋ฆผ ์ž…์ถœ๋ ฅ์—์„œ์˜์ŠคํŠธ๋ฆผ์€ 14์žฅ์˜์ŠคํŠธ๋ฆผ๊ณผ๋Š” ๋‹ค๋ฅธ๊ฐœ๋…. 15์žฅ์˜ ์ŠคํŠธ๋ฆผ์€ I/O๋ฅผ ์‰ฝ๊ฒŒ ๋„์™€์ฃผ๋Š” ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์šด๋ฐ˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ๊ฒฐํ†ต๋กœ. ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ๋งŒ ๊ฐ€๋Šฅํ•จ. ์ž…/์ถœ๋ ฅ ๋™์‹œ์— ์ˆ˜ํ–‰ ์‹œ 2๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์ด ํ•„์š”ํ•จ. ๋จผ์ €๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๋ฐ›์Œ. ์ค‘๊ฐ„์— ๊ฑด๋„ˆ๋œ€ ์—†์ด ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ ์ฃผ๊ณ ๋ฐ›๊ธฐ. ์–ด๋–ค๋Œ€์ƒ์„ ์ž‘์—…ํ•˜๋Š”์ง€?์ž…๋ ฅ/์ถœ๋ ฅ์ธ์ง€? ๊ณ ๋ คํ•ด์„œ ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•จ. ์ŠคํŠธ๋ฆผ์˜ ์ตœ๊ณ ์กฐ์ƒ InputStream Read. ์ฝ๊ธฐ๋ฅผ ๋„์™€์คŒ(๋ฐ”์ดํŠธ๊ธฐ๋ฐ˜) OutputStream Write. ์“ฐ๊ธฐ๋ฅผ ๋„์™€์คŒ(๋ฐ”์ดํŠธ๊ธฐ๋ฐ˜) ๋ณด์กฐ์ŠคํŠธ๋ฆผ ์ŠคํŠธ๋ฆผ์˜ ๊ธฐ๋Šฅ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•จ. ์ŠคํŠธ๋ฆผ ๊ธฐ์„ ํ–ฅ์ƒ๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ• .. 2023. 11. 20.
[ch.14] Optional<T>์™€ OptionalInt Optional ์ง€๋„ค๋ฆญ ํด๋ž˜์Šค. Tํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ์‹ธ๋Š” ๋ž˜ํผํด๋ž˜์Šค. Optionalํƒ€์ž…์˜ ๊ฐ์ฒด์—๋Š” ๋ชจ๋“  ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์Œ. Optional ๊ฐ์ฒด์ƒ์„ฑ Optionalํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ Optional.empty(): T ํƒ€์ž…์˜ ๋นˆ Optional ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” public static ๋ฉ”์„œ๋“œ. Optional ๊ฐ์ฒด์— ์ €์žฅ๋œ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ Optional ๊ฐ์ฒด์— ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ŠคํŠธ๋ฆผ ๋ฉ”์„œ๋“œ filter( ), map( ), flatMap( ) Optional๊ฐ’์ด null์ด๋ฉด ์ด ๋ฉ”์„œ๋“œ๋“ค์€ ์•„๋ฌด์ผ๋„ ํ•˜์ง€ ์•Š์Œ. boolean์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ Stream์˜๋ฉ”์„œ๋“œ์ค‘ Optional๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ ๊ณตํ†ต์  : null์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ํฐ ๊ฒƒ๋“ค, ์ŠคํŠธ๋ฆผ์ด ๋น„์–ด์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ. Op.. 2023. 11. 20.
[ch.14] ์ŠคํŠธ๋ฆผ์˜ ์ตœ์ข…์—ฐ์‚ฐ ์šฐ์™€ ์ด๊ฑฐ ์–ธ์ œ ๋ณต๋ถ™ํ•˜์ง€ ใ…‹ใ…‹.. ์ผ๋‹จ ์ด๋ฏธ์ง€๋กœ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค 2023. 11. 15.
[ch.14] ์ŠคํŠธ๋ฆผ์˜ ์ค‘๊ฐ„์—ฐ์‚ฐ ์ŠคํŠธ๋ฆผ ์ž๋ฅด๊ธฐ : skip, limit ์ŠคํŠธ๋ฆผ์˜ ์ผ๋ถ€๋ฅผ ์ž˜๋ผ๋‚ผ ๋•Œ ์‚ฌ์šฉํ•จ. skip( ): n๊ฐœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ limit( ): ์š”์†Œ๋ฅผ n๊ฐœ๋กœ ์ œํ•œํ•˜๊ธฐ ๊ธฐ๋ณธํ˜• ์ŠคํŠธ๋ฆผ์—๋„ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Œ. ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ : distinct, filter distinct( ): ์ค‘๋ณต ์ œ๊ฑฐ filter( ): ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋งž๋Š” ๊ฒƒ๋งŒ ๋‚จ๊น€. ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ Predicate๊ฐ€ ํ•„์š”ํ•จ. ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ boolean์ธ ๋žŒ๋‹ค์‹๋„ ๊ฐ€๋Šฅํ•จ. ๋‹ค๋ฅธ ์กฐ๊ฑด์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ex) ์ŠคํŠธ๋ฆผ.filter(A).filter(B).filter(C) ์ •๋ ฌํ•˜๊ธฐ : sorted, Comparator์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ sorted( ): ์ง€์ •๋œ Comparator๋กœ ์ŠคํŠธ๋ฆผ์„ ์ •๋ ฌํ•จ. Comparator๋Œ€์‹  int๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋žŒ๋‹ค์‹์„ .. 2023. 11. 15.
[ch.14] ์ŠคํŠธ๋ฆผ์˜ ์ƒ์„ฑ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ž‘์—…ํ•˜๋ ค๋ฉด ์ŠคํŠธ๋ฆผ์ด ํ•„์š”ํ•จ. ๋‹ค์–‘ํ•œ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ. ์ปฌ๋ ‰์…˜ : stream Collection ์ธํ„ฐํŽ˜์ด์Šค์— stream( ) ์ •์˜๋˜์–ด์žˆ์Œ. List, Set์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋“ค์€ ๋ชจ๋‘ ์ด ๋ฉ”์„œ๋“œ๋กœ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ. stream( )๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น ์ปฌ๋ ‰์…˜์„ ์†Œ์Šค๋กœ ํ•˜๋Š” ์ŠคํŠธ๋ฆผ์„ ๋ฐ˜ํ™˜ํ•จ. ๋ฐฐ์—ด : stream, of ๋ฐฐ์—ด์„ ์†Œ์Šค๋กœ ํ•˜๋Š” ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฉ”์„œ๋“œ ํŠน์ • ๋ฒ”์œ„์˜ ์ •์ˆ˜ : range, rangeClosed IntStream, Long Streamํด๋ž˜์Šค๋Š” ์ง€์ •๋œ ๋ฒ”์œ„์˜ ์—ฐ์†๋œ ์ •์ˆ˜๋ฅผ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ. range( begin, end ), rangeClosed( begin, end ) ๋นˆ์ŠคํŠธ๋ฆผ : empty ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์—†.. 2023. 11. 15.
[ch.14] ์ŠคํŠธ๋ฆผ์˜ ํŠน์ง• ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ์†Œ์Šค ์ถ”์ƒํ™” + (์ž์ฃผ์‚ฌ์šฉํ•˜๋Š”)๋ฉ”์„œ๋“œ ์ •์˜ ๋ฐ์ดํ„ฐ์†Œ์Šค ์ถ”์ƒํ™”: ๋ฐ์ดํ„ฐ์†Œ์Šค๊ฐ€ ๋ฌด์—‡์ด๋“  ๊ฐ„์— ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ=์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ↑ (๋ฐฐ์—ด, ์ปฌ๋ ‰์…˜, ํŒŒ์ผ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•จ) ์œ ํ•œ์ŠคํŠธ๋ฆผ/๋ฌดํ•œ์ŠคํŠธ๋ฆผ์ด ์žˆ์Œ. ์ŠคํŠธ๋ฆผ์˜ ํŠน์ง• โ—‡ ์ŠคํŠธ๋ฆผ์€ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ์ฝ๊ธฐ๋งŒ ํ•จ. ๋ณ€๊ฒฝ์€ X. ํ•„์š”์‹œ ๋ฐ˜ํ™˜์ด ๊ฐ€๋Šฅํ•จ(๊ฒฐ๊ณผ๋ฅผ ๋‹ด์€ ์ปฌ๋ ‰์…˜/๋ฐฐ์—ด) โ—‡ ์ŠคํŠธ๋ฆผ์€ ์ผํšŒ์šฉ์ด๋‹ค. ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•˜๋ฉด(์ตœ์ข…์—ฐ์‚ฐ์ˆ˜ํ–‰) ์ŠคํŠธ๋ฆผ ๋‹ซํ˜€์„œ ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ. ํ•„์š”์‹œ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๋ฉด ๋จ. โ—‡ ์ŠคํŠธ๋ฆผ์€ ์ž‘์—…์„ ๋‚ด๋ถ€๋ฐ˜๋ณต์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋‚ด๋ถ€๋ฐ˜๋ณต=๋ฐ˜๋ณต๋ฌธ์„ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์— ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ. โ—‡ ์ŠคํŠธ๋ฆผ์˜ ์—ฐ์‚ฐ์€ ์ค‘๊ฐ„์—ฐ์‚ฐ๊ณผ ์ตœ์ข…์—ฐ์‚ฐ์ด ์žˆ๋‹ค. ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์„ ์ œ๊ณตํ•ด์„œ ๋ณต์žกํ•œ ์ž‘์—…๋“ค์„ ๊ฐ„๋‹จํžˆ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•จ. *์ค‘๊ฐ„์—ฐ์‚ฐ:.. 2023. 11. 15.