๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กJava (24)

Unfazedโ—๏ธ๐ŸŽฏ

[Java] ์Šค๋ ˆ๋“œ์˜ ๊ธฐ๋Šฅ๊ณผ ๋””๋ฒ„๊น…

1. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์˜ ๊ฐœ๋…๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. Java์—์„œ๋Š” Thread ํด๋ž˜์Šค์™€ Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.์Šค๋ ˆ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด CPU ์ž์›์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋ฐ ์‘๋‹ต์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.2. ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ ์ƒ์„ฑํ•˜๊ธฐJava์—์„œ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋จผ์ € Thread ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ƒ์„ฑ์ž์— Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๊ณ , Runnable ์ธํ„ฐํŽ˜์ด์Šค์˜ run() ๋ฉ”์„œ๋“œ์— ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ํ•  ๋กœ์ง์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.Thread thread = new Thread(new Runnable() { @Override public void run() { ..

Java 2025. 2. 6. 11:45
HashSet/HashMap์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ ๋ฐ ์ค‘๋ณต ์ œ๊ฑฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜

HashSet์€ Java Collections Framework์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋กœ, ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ง‘ํ•ฉ(Set) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. 1. HashSet์˜ ์ฃผ์š” ํŠน์ง•์ค‘๋ณต ์š”์†Œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ : ๋ฐ์ดํ„ฐ ๋™๋“ฑ์„ฑ ํ™•์ธ์„ ์œ„ํ•œ equals(), hashCode() ๋ฉ”์„œ๋“œ ํ•„์š”์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ : ์ธ๋ฑ์Šค๊ฐ€ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฉ”์„œ๋“œ(get(int index), indexOf(Object o) ๋“ฑ)์ด ์—†์Œnull ์š”์†Œ ํ—ˆ์šฉ ๋น„๋™๊ธฐ(non-synchronized) ๊ตฌํ˜„O(1) ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ๊ธฐ๋ณธ ์—ฐ์‚ฐ2. ๋‚ด๋ถ€ ๊ตฌ์กฐ 2-1) ์ฃผ์š” ํ•„๋“œ์œ„์˜ ์ฝ”๋“œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด HashSet์€ ๋‚ด๋ถ€์ ์œผ๋กœ HashMap์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.HashSet์€ ์š”์†Œ๋“ค์„ HashMap์˜ key๋กœ ์ €์žฅํ•œ๋‹ค.๋ชจ๋“  ๊ฐ’์— ๋Œ€..

Java 2025. 1. 22. 11:59
Java Stream API - map() & flatMap()

Java 8์—์„œ ๋„์ž…๋œ Stream API๋Š” ์ปฌ๋ ‰์…˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ map()๊ณผ flatMap() ๋ฉ”์„œ๋“œ๋Š” ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜๊ณผ ์ฒ˜๋ฆฌ์— ์žˆ์–ด ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•œ๋‹ค. 1. map() Stream map( Function mapper // R : ์ถœ๋ ฅ ํƒ€์ž… (์ƒˆ๋กœ์šด ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ ํƒ€์ž…))map() ๋ฉ”์„œ๋“œ๋Š” ์ŠคํŠธ๋ฆผ์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋‹ค๋ฅธ ์š”์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” 1:1 ๋งคํ•‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ž…๋ ฅ ์š”์†Œ ํ•˜๋‚˜๋‹น ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ์ถœ๋ ฅ ์š”์†Œ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.์ฃผ์š” ํŠน์ง•๊ฐ ์š”์†Œ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณ€ํ™˜์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ ๊ฐœ์ˆ˜ ์œ ์ง€ (one-to-one)์›๋ณธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ณด์กด๋ฐ˜ํ™˜ ํƒ€์ž…: Stream (R์€ ๋ณ€ํ™˜๋œ ํƒ€์ž…)์˜ˆ์‹œ ์ฝ”๋“œ// ๋ฌธ์ž์—ด ๊ธธ์ด ๋ณ€ํ™˜List words = Arrays.asList("Java", "Stre..

Java 2025. 1. 20. 09:04
command line์„ ํ™œ์šฉํ•œ JAR ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ

Java ๊ฐœ๋ฐœ์—์„œ JAR(Java Archive) ํŒŒ์ผ์€ Java ํด๋ž˜์Šค ํŒŒ์ผ๊ณผ ๊ด€๋ จ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฌถ์–ด ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ•„์ˆ˜์ ์ธ ์š”์†Œ๋‹ค. ํ˜„๋Œ€์˜ IDE๋‚˜ Maven, Gradle ๊ฐ™์€ ๋นŒ๋“œ ๋„๊ตฌ๋“ค์ด JAR ์ƒ์„ฑ์„ ์ž๋™ํ™”ํ•ด ์ฃผ์ง€๋งŒ, JAR ์ƒ์„ฑ ์ˆ˜๋™ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ Java์˜ ํŒจํ‚ค์ง• ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์ค‘์š”ํ•˜๋‹ค. JDK(Java Development Kit) ์„ค์น˜ ํ•„์š”JDK - ์ปดํŒŒ์ผ์„ ์œ„ํ•œ javac์™€ jar ํŒŒ์ผ ์ƒ์„ฑ์„ ์œ„ํ•œ jar ๊ฐ™์€ ํ•„์ˆ˜ ๋„๊ตฌ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. JAR ํŒŒ์ผ์€ ์ž๋ฐ” ๋Ÿฐํƒ€์ž„์ด ํšจ์œจ์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌ(deploy)ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋‹จ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๋‹ค. ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ํด๋ž˜์Šค์™€ ๊ด€๋ จ ๋ฆฌ์†Œ์Šค๋“ค์„ ๋‹จ์ผ ํŒŒ์ผ๋กœ ๋ฌถ์–ด ์••์ถ•๋œ ํ˜•ํƒœ์ธ JAR ํŒŒ์ผ์€..

Java 2024. 12. 21. 21:01
์ž๋ฐ”์˜ ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ์ดํ•ดํ•˜๊ธฐ: ๊ธฐ๋ณธํ˜•(Primitive Type)๊ณผ ์ฐธ์กฐํ˜•(Reference Type)์˜ ์ฐจ์ด

์ž๋ฐ”์—์„œ ๋ฐฐ์—ด์„ ๋‹ค๋ฃฐ ๋•Œ ๊ธฐ๋ณธํ˜•(Primitive Type)๊ณผ ์ฐธ์กฐํ˜•(Reference Type)์˜ ์ดˆ๊ธฐํ™” ๋ฐฉ์‹์—๋Š” ์ค‘์š”ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ ์ด ์ฐจ์ด์ ์„ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ , ์‹ค์ œ ์ฝ”๋“œ์—์„œ ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.1. ๋ฐฐ์—ด์˜ ๊ธฐ๋ณธ ์ดˆ๊ธฐํ™”1.1 ๊ธฐ๋ณธํ˜• ๋ฐฐ์—ด(Primitive Type)๊ธฐ๋ณธํ˜• ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋ฉด ๊ฐ ์š”์†Œ๋Š” ํ•ด๋‹น ํƒ€์ž…์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ž๋™ ์ดˆ๊ธฐํ™”๋œ๋‹ค.int[] arr = new int[5];System.out.println(arr[0]); // ์ถœ๋ ฅ: 0arr[0] = 10; // ๋ฐ”๋กœ ๊ฐ’ ๋Œ€์ž… ๊ฐ€๋Šฅ ๊ฐ ๊ธฐ๋ณธํ˜• ํƒ€์ž…๋ณ„ ์ดˆ๊ธฐ๊ฐ’byte -> 0short -> 0int -> 0long -> 0Lfloat -> 0.0fdouble -> 0.0dbool..

Java 2024. 11. 3. 18:30
Java ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ: String vs StringBuilder์˜ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ ๋ถ„์„

Android ์•ฑ ๊ฐœ๋ฐœ์ค‘ ๋ฌธ์ž์—ด์„ ์ง€์†์ ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๊ณ , ๋‹จ์ˆœํžˆ String์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์ƒ๊ฐ๋ณด๋‹ค ํฐ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.String๊ณผ StringBuilder์˜ ์ฐจ์ด์ ์„ ์‚ดํŽด๋ณด๊ณ , ์™œ ๋ฐ˜๋ณต์ ์ธ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์ž‘์—…์—์„œ StringBuilder๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. String์˜ ํŠน์„ฑ => Immutable(๋ถˆ๋ณ€)Java์—์„œ String์€ ๋ถˆ๋ณ€ ๊ฐ์ฒด์ด๋‹ค. ์ฆ‰, ํ•œ๋ฒˆ ์ƒ์„ฑ๋œ String ๊ฐ์ฒด์˜ ๋‚ด์šฉ์€ ์ ˆ๋Œ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. String์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.String str = "hello";str = str + "world";์œ„์˜ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์—์„œ ์‹ค์ œ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์ผ์€ ์•„๋ž˜์™€ ..

Java 2024. 10. 26. 16:17
[Java] ํšจ์œจ์ ์ธ ๋ฌธ์ž์—ด ๊ฒ€์‚ฌ: isEmpty()์™€ isBlank() ์‚ฌ์šฉํ•˜๊ธฐ

Java ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ๋ฌธ์ž์—ด์ด ๋น„์–ด์žˆ๋Š”์ง€ ๋˜๋Š” ๊ณต๋ฐฑ๋งŒ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ž์ฃผ ์žˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ผ์ง€ String.isEmpty()์™€ String.isBlank() ๋ฉ”์†Œ๋“œ์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ ํ•œ๋‹ค. ๋ฌธ์ œ: ๋น„ํšจ์œจ์ ์ธ ๋ฌธ์ž์—ด ๊ธธ์ด ์ฒดํฌํ‰์†Œ ๋ฌธ์ž์—ด์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ๋ณ„ ์ƒ๊ฐ์—†์ด isEmpty, length()๋ฅผ ํ˜ผ์šฉํ•˜๋ฉฐ ์ฝ”๋”ฉ์„ ํ–ˆ๋‹ค.if (string.length() == 0) if (string.length() > 0) if (string.trim().length() == 0) if (string.trim().length() > 0) ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ์ž‘๋™์€ ํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.ใ„น์ฝ”๋“œ๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊ธธ์–ด์ง„๋‹ค.t..

Java 2024. 9. 7. 18:33
Collection.toArray(new T[0]) vs .toArray(new T[size]) / ์ปฌ๋ ‰์…˜์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์„ฑ๋Šฅ ๋น„๊ต

Java์—์„œ ์ปฌ๋ ‰์…˜์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ toArray(new T[0])์™€ toArray(new T[size])๋กœ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๋‘ ๋ฐฉ๋ฒ• ๋ชจ๋‘ ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ฑ๋Šฅ๋ฉด์—์„œ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ๋” ๊ถŒ์žฅ๋˜๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์„ฑ๋Šฅ ๋น„๊ต ๋ฐ ๋ถ„์„ JMH(Java Microbenchmark Harness)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ JDK ๋ฒ„์ „์—์„œ ๋‹ค์–‘ํ•œ ์ปฌ๋ ‰์…˜ ํฌ๊ธฐ์— ๋Œ€ํ•ด ์ด ๋‘ ๋ฐฉ๋ฒ•์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•œ ์•„ํ‹ฐํด์ด ์žˆ์–ด ํ•ต์‹ฌ๋งŒ ์š”์•ฝํ•ด๋ณด๋ คํ•œ๋‹ค. ์„ฑ๋Šฅ ์ธก์ • ๊ฒฐ๊ณผ, toArray(new T[0]) ๋ฐฉ๋ฒ•์ด toArray(new T[size]) ๋ฐฉ๋ฒ•๋ณด๋‹ค ์ผ๊ด€๋˜๊ฒŒ ๋” ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์˜€๋‹ค. ์ด๋Š” ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ๊ณผ์ •์—์„œ์˜ ์ฐจ์ด ๋•Œ๋ฌธ์ธ๋ฐ, toArray(new T[0])๋Š”..

Java 2024. 1. 14. 02:26