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

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

[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.
[ch.14] java.util.function ํŒจํ‚ค์ง€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž์ฃผ ์“ฐ์ด๋Š” ํ˜•์‹์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด๋‘ . java.util.function ํŒจํ‚ค์ง€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋“ค์€ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜๊ฐ’ ๋ชจ๋‘ ์ œ๋„ค๋ฆญ ํƒ€์ž…์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์Œ. ๋”ฐ๋ผ์„œ ๊ธฐ๋ณธํ˜• ๊ฐ’(primitive type)์„ ์ฒ˜๋ฆฌํ•  ๋•Œ๋Š” ํ•ด๋‹น ๊ธฐ๋ณธํ˜•์˜ ๋ž˜ํผ(wrapper) ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ. ์กฐ๊ฑด์‹ ํ‘œํ˜„์— ์‚ฌ์šฉ๋˜๋Š” Predicate predicate๋Š” Function์˜ ๋ณ€ํ˜•์œผ๋กœ ๋ฐ˜ํ™˜ํƒ€์ž…์ด boolean์ž„. ์กฐ๊ฑด์‹์„ ๋žŒ๋‹ค์‹์œผ๋กœ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•จ. java.util.function ํŒจํ‚ค์ง€์˜ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋“ค ๊ธฐ๋ณธํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค ๋‹จ์ง€ ์„ฑ๋Šฅ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•จ. Function์˜ ํ•ฉ์„ฑ ๋‘ ๋žŒ๋‹ค์‹์„ ํ•ฉ์„ฑํ•ด์„œ ์ƒˆ๋กœ์šด ๋žŒ๋‹ค์‹์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ. ์–ด๋Š ํ•จ์ˆ˜๋ฅผ ๋จผ์ € ์ ์šฉํ•˜๋Š๋ƒ์— .. 2023. 11. 15.
[ch.14] ๋žŒ๋‹ค์‹ ๋žŒ๋‹ค์‹ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ ๋ธ”๋ก ์ž์ฒด๋ฅผ ์ „๋‹ฌํ•จ. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ฐœ๋…์„ ์ ์šฉํ•œ ๊ฒƒ. ๋žŒ๋‹ค์‹์œผ๋กœ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ. ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค ๋žŒ๋‹ค์‹์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค. ์˜ค์ง ํ•˜๋‚˜์˜ ์ถ”์ƒ๋ฉ”์„œ๋“œ๋งŒ ์ •์˜๋˜์–ด์žˆ์–ด์•ผํ•จ(์ œ์•ฝ) ๊ทธ๋ž˜์•ผ ๋žŒ๋‹ค์‹๊ณผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๊ฐ€ 1:1์—ฐ๊ฒฐ. static๋ฉ”์„œ๋“œ์™€ default๋ฉ”์„œ๋“œ๋Š” ๊ฐœ์ˆ˜ ์ œ์•ฝX ์ต๋ช…๊ฐ์ฒด๋ฅผ ๋žŒ๋‹ค์‹์œผ๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•œ ์ด์œ  ๋žŒ๋‹ค์‹์€ ์‹ค์ œ๋กœ ์ต๋ช… ๊ฐ์ฒด์ž„. ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ์ต๋ช…๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ์™€ ๋žŒ๋‹ค์‹์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…๊ณผ ๊ฐœ์ˆ˜, ๋ฐ˜ํ™˜๊ฐ’์ด ์ผ์น˜ํ•ด์„œ. ๋ฉ”์„œ๋“œ ์ฐธ์กฐ ์ด๋ฏธ ๊ตฌํ˜„๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์‚ฌ์šฉํ•จ. ์ฝ”๋“œ ์ค‘๋ณต ๋ฐฉ์ง€. ๊ฐ€๋…์„ฑ↑, ์ฝ”๋“œ์˜ ๊ฐ„๊ฒฐํ•œ ์ž‘์„ฑ. ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•จ. ๋žŒ๋‹ค์‹์„ ํ˜ธ์ถœํ•˜๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜ f์˜ ํƒ€์ž… ๋žŒ๋‹ค์‹๊ณผ ๋™๋“ฑํ•œ ๋ฉ”์„œ.. 2023. 11. 15.
[CH.13] ์“ฐ๋ ˆ๋“œ์˜ ๋™๊ธฐํ™”(Lock) ์“ฐ๋ ˆ๋“œ์˜ ๋™๊ธฐํ™” ํ•œ ์“ฐ๋ ˆ๋“œ๊ฐ€ ํŠน์ •์ž‘์—…์„ ๋๋งˆ์น˜๊ธฐ ์ „๊นŒ์ง€, ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ์— ์˜ํ•ด ๋ฐฉํ•ด๋ฐ›์ง€ ์•Š์•„์•ผ ํ•จ. ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ฐ™์€ ์ž์›์„ ๊ณต์œ ํ•ด์„œ ์ž‘์—…ํ•˜๋ฏ€๋กœ ์„œ๋กœ ์ž‘์—…์— ์˜ํ–ฅ์„ ์คŒ. ์ž„๊ณ„์˜์—ญ : ๊ณต์œ ๋ฐ์ดํ„ฐ(์ž์›)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ ์˜์—ญ ๋ฝ : ์ž ๊ธˆ, ๊ณต์œ ๋ฐ์ดํ„ฐ์˜ ๋ฝ์„ ํš๋“ํ•œ ๋‹จ ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ๋งŒ ์ž„๊ณ„์˜์—ญ ๋‚ด์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ. ๊ฐ์ฒด ๋‹จ์œ„(๋ณ€์ˆ˜๋ฌถ์Œ, ๋ฐ์ดํ„ฐ)๋กœ ๋ฝ์ด ๊ฑธ๋ฆผ. ์ˆ˜ํ–‰ ํ›„์—๋Š” lock์„ ๋ฐ˜๋‚ฉํ•ด์•ผ ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•จ. โ‘ synchronized๋ฅผ ์ด์šฉํ•œ ๋™๊ธฐํ™” โ‘กwait( )๊ณผ notify( )๋ฅผ ์ด์šฉํ•œ ๋™๊ธฐํ™” โ‘ขLock๊ณผ Condition์„ ์ด์šฉํ•œ ๋™๊ธฐํ™” ์“ฐ๋ ˆ๋“œ ๋™๊ธฐํ™” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ• synchronized โ‘  ๋ฉ”์„œ๋“œ ์ „์ฒด๋ฅผ ์ž„๊ณ„์˜์—ญ์œผ๋กœ ์ง€์ • ๋ฐ˜ํ™˜ํƒ€์ž…์•ž์— synchronized๋ถ™์ด๊ธฐ.. 2023. 11. 15.
[ch.13] ์“ฐ๋ ˆ๋“œ ์‹คํ–‰ ์ œ์–ด ๋ฉ”์„œ๋“œ ์“ฐ๋ ˆ๋“œ์˜ ์‹คํ–‰ ์ œ์–ด “ํšจ์œจ์ ์ธ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ” =์ •๊ตํ•œ ์Šค์ผ€์ค„๋ง์„ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ฃผ์–ด์ง„ ์ž์›๊ณผ ์‹œ๊ฐ„์„ ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋‚ญ๋น„์—†์ด ์ž˜ ์‚ฌ์šฉํ•˜๋„๋ก ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋Š” ๊ฒƒ. ๋ฉ”์„œ๋“œ(1) static๋ฉ”์„œ๋“œ๋ผ ์ž์‹ ์—๊ฒŒ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•จ. (์ž์‹ =ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์“ฐ๋ ˆ๋“œ) ๋ฉ”์„œ๋“œ(2) ์“ฐ๋ ˆ๋“œ์˜ ์Šค์ผ€์ค„๋ง ๊ด€๋ จ ๋ฉ”์„œ๋“œ sleep(์‹œ๊ฐ„) static๋ฉ”์„œ๋“œ ์ง€์ •๋œ ์‹œ๊ฐ„๋™์•ˆ ์“ฐ๋ ˆ๋“œ ๋ฉˆ์ถ”๊ธฐ. sleep์— ์˜ํ•ด ์ผ์‹œ์ •์ง€๋œ ์“ฐ๋ ˆ๋“œ๋ฅผ ๊นจ์šฐ๋Š”(์‹คํ–‰๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“ค๊ธฐ) ๋ฐฉ๋ฒ• โ‘ ์ง€์ •๋œ ์‹œ๊ฐ„ ๋‹ค ๋˜๊ธฐ โ‘ก interrupt( )ํ˜ธ์ถœ sleep( )ํ˜ธ์ถœ ์‹œ ๋ฐ˜๋“œ์‹œ try-catch๋ฌธ์œผ๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•ด์ฃผ์–ด์•ผ ํ•จ. (์ด๊ฒƒ์„ ๋ฉ”์„œ๋“œ๋กœ ๋งŒ๋“ค์–ด๋„ ๋จ) ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ๊ฐ€ ํ˜„์žฌ ์“ฐ๋ ˆ๋“œ์—๊ฒŒ interruptํ•˜๋ฉด sleep( )๋ฉ”์„œ๋“œ๊ฐ€ Interrupted.. 2023. 11. 15.