[Java] ์ž๋ฐ” ์ŠคํŠธ๋ฆผ(Stream) ๊ฐœ๋… + ์˜ˆ์ œ ์ด์ •๋ฆฌ ๐Ÿ“š
ยท
โ˜•Java/๐Ÿ“Java Programming
โœ… 1. ์™ธ๋ถ€๋ฐ˜๋ณต๊ณผ ๋‚ด๋ถ€๋ฐ˜๋ณตList names = Arrays.asList("Alice", "Bob", "Charlie");// ์™ธ๋ถ€ ๋ฐ˜๋ณต: for-each๋ฌธfor (String name : names) { System.out.println(name);}// ๋‚ด๋ถ€ ๋ฐ˜๋ณต: Stream + forEachnames.stream().forEach(name -> System.out.println(name)); (1) ์™ธ๋ถ€๋ฐ˜๋ณต๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฃจํ”„ ๊ตฌ์กฐ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•ด์„œ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•œ๋‹ค.์‰ฝ๊ฒŒ ๋งํ•ด, for๋ฌธ while๋ฌธ Iterator ๊ฐ™์€ ๋ฐ˜๋ณต๋ฌธ์„ ์ง์ ‘ ์‚ฌ์šฉํ•ด์„œ ์–ด๋–ป๊ฒŒ ๋ฐ˜๋ณตํ• ์ง€ ์ง์ ‘ ๋ช…์‹œํ•ด์„œ ์ œ์–ดํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.(2) ๋‚ด๋ถ€๋ฐ˜๋ณต๋ฐ˜๋ณต์˜ ์ œ์–ด๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์—๊ฒŒ ๋งก๊ธฐ๊ณ , ๊ฐœ๋ฐœ์ž๋Š” ๋ฌด์—‡์„ ํ• ์ง€๋งŒ..
[Java] ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์ •๋ฆฌ: List, Set, Map ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋Œ€ํ‘œ ๊ตฌํ˜„์ฒด ์ด์ •๋ฆฌ
ยท
โ˜•Java/๐Ÿ“Java Programming
โœ… 1. ์ปฌ๋ ‰์…˜(Collection)์ด๋ž€?Collection ์ž์ฒด๋Š” ์˜์–ด๋กœ "์ˆ˜์ง‘๋œ ๊ฒƒ, ๋ชจ์Œ"์„ ์˜๋ฏธํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ „๋ฐ˜์—์„œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ์„ ํ‘œํ˜„ํ•  ๋•Œ ์ž์ฃผ ์“ฐ์ธ๋‹ค.ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„  ์—ฌ๋Ÿฌ ์›์†Œ๋ฅผ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ , ๊ด€๋ฆฌ(๊ฒ€์ƒ‰, ์ •๋ ฌ, ์‚ญ์ œ ๋“ฑ) ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.์ž๋ฐ”์—์„  JCF(Java Collections Framework)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์ธํ„ฐํŽ˜์ด์Šค์™€ ํด๋ž˜์Šค๋กœ ํ•ด๋‹น ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.์ž๋ฐ” ์ปฌ๋ ‰์…˜์˜ ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ๋Š” Collection, List, Set, Queue, Map ์ด ์žˆ๋‹คโœ… 2. JCF(Java Collections Framework) ๊ตฌ์กฐ (1) JCF(Java Collections Framew..
[Java] java.nio ์‚ฌ์šฉ๋ฒ• | Path, Files, FileChannel ์˜ˆ์ œ ๋ชจ์Œ
ยท
โ˜•Java/๐Ÿ“Java Programming
โœ… 1. java.nio ํŒจํ‚ค์ง€NIO(New Input Output)๋Š” ๊ธฐ์กด java.io ํŒจํ‚ค์ง€๋ฅผ ๊ฐœ์„ ํ•œ ์ƒˆ๋กœ์šด ์ž…์ถœ๋ ฅ ํŒจํ‚ค์ง€์ด๋‹ค.JDK 7๋ถ€ํ„ฐ๋Š” ํŒŒ์ผ I/O๋ฅผ ๊ฐœ์„ ํ•œ NIO2๋„ ๋“ฑ์žฅ์„ ํ•จ( ์ด๋•Œ java.nio.file ํŒจํ‚ค์ง€๊ฐ€ ๋“ฑ์žฅํ•จ )java.nio.file, java.nio.channels, java.nio.charset ๋“ฑ์ด ์žˆ์ŒFile ํด๋ž˜์Šค๋ณด๋‹ค ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” Path ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•จ. java.nio.file ์•ˆ์— Path ํด๋ž˜์Šค๊ฐ€ ์žˆ์Œ.Files ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ํŒŒ์ผ/๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์กฐ์ž‘, ํŒŒ์ผ์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จํŒŒ์ผ ์ž…์ถœ๋ ฅ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ FileChannel ํด๋ž˜์Šค๊ฐ€ ์žˆ์Œ ( ๋ฒ„ํผ๋ง ๊ธฐ๋Šฅ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•จ )์ž…์ถœ๋ ฅ์ด ๊ธฐ์กด์—๋Š” ๊ตฌ๋ถ„์ด ๋˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์—ˆ์ง€๋งŒ, FileChan..
[Java] java.io ํŒจํ‚ค์ง€ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ
ยท
โ˜•Java/๐Ÿ“Java Programming
โœ… 1. ์ŠคํŠธ๋ฆผ(Stream)์ด๋ž€?๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ์ชฝ์—์„œ ๋‹ค๋ฅธ ์ชฝ์œผ๋กœ ์—ฐ์†์ ์œผ๋กœ ํ๋ฅด๋Š” ํ†ต๋กœ๋ฅผ ์˜๋ฏธํ•œ๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์„ ์ถ”์ƒํ™”ํ•œ ๊ฐ์ฒด๊ฐ€ Stream์ž„.์‰ฝ๊ฒŒ๋งํ•ด, Stream์€ ์ˆ˜๋„๊ด€ ๋ฐ์ดํ„ฐ๋Š” ๊ทธ ์•ˆ์—์„œ ํ๋ฅด๋Š” ๋ฌผ๊ณผ ๊ฐ™์€ ๋А๋‚Œ์ด๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋„๊ผญ์ง€๋ฅผ ํ‹€๊ฑฐ๋‚˜ ์ž ๊ทธ๋Š” ์—ญํ• ์ž„.๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ž…์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ํ†ต๋กœ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.์ž๋ฐ”์—์„œ ๋ชจ๋“  IO ๊ธฐ๋ฐ˜ ํ†ต์‹ ์€ ์ŠคํŠธ๋ฆผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ์Œ. ( ๋„คํŠธ์›Œํฌ, HTTP, ํŒŒ์ผ, ์ฝ˜์†” ๋“ฑ )โœ… 2. ์ŠคํŠธ๋ฆผ(Stream) ์ข…๋ฅ˜ํฌ๊ฒŒ ๊ธฐ๋ณธ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ, ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์ด ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ๊ณผ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์„ ์ œ๊ณตํ•ด์ค€๋‹ค.๊ธฐ๋ณธ, ๋ณด์กฐ ์ŠคํŠธ๋ฆผ ๋‚ด๋ถ€์—์„œ๋Š” ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ, ๋ฌธ์ž ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋˜ ๋‚˜๋ˆ„์–ด์ง€๊ฒŒ ๋œ๋‹ค.(1) ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผJava I/O์—์„œ ์ž…์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ..
[Java] java.lang ํŒจํ‚ค์ง€ ์ •๋ฆฌ: Object, String, Math ํด๋ž˜์Šค ์ด์ •๋ฆฌ
ยท
โ˜•Java/๐Ÿ“Java Programming
โœ… 1. java.lang ํŒจํ‚ค์ง€๋ž€?import java.lang.*;Java์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ด๊ณ  ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค๋“ค์„ ๋ชจ์•„๋†“์€ ํŒจ์ง€ํ‚ค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.java.lang ํŒจํ‚ค์ง€๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์˜ ์ž๋™์œผ๋กœ import๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ import๋ฅผ ์ด์šฉํ•ด ์‚ฌ์šฉ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ปดํŒŒ์ผ ์‹œ ๋ชจ๋“  ์ฝ”๋“œ์— ํ•ด๋‹น import ๋ฌธ์ด ์ƒ๋‹จ์— ๋ถ™๊ฒŒ ๋œ๋‹ค.java.lang ํŒจํ‚ค์ง€ ๋‚ด๋ถ€์—๋Š” String, Object, Thread, System ๋“ฑ ์ž๋ฐ”์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ํด๋ž˜์Šค๋“ค์ด ๋“ค์–ด๊ฐ€ ์žˆ์Œ.โœ… 2. Object ํด๋ž˜์Šค// ์ปดํŒŒ์ผ ์ „public class MyClass {}// ์ปดํŒŒ์ผ ํ›„ -> .classpublic class MyClass extends Object {}์ž๋™์œผ๋กœ ๋ชจ๋“  ํด๋ž˜์Šค์˜ ์กฐ์ƒ..
[Java] ์ž๋ฐ” ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋žŒ๋‹ค์‹(Lambda Expression) ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๊ธฐ
ยท
โ˜•Java/๐Ÿ“Java Programming
โœ… 1. ๋žŒ๋‹ค์‹์ด๋ž€?// ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค@FunctionalInterfaceinterface Printer { void print(String message);}// Mainpublic class Main { public static void main(String[] args) { Printer printer = (message) -> System.out.println("์ถœ๋ ฅ:" + message); // ์ต๋ช…ํ•จ์ˆ˜์ •์˜ printer.print("print, message") // ์ •์˜ ๋œ ํ•จ์ˆ˜ ํ˜ธ์ถœ }}ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ๋ฌธ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค.๋žŒ๋‹ค์‹์€ ์˜ค์ง ์ถ”์ƒ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•˜๋‚˜์ธ ์ธํ„ฐํŽ˜์ด์Šค ์—์„œ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด๋ฅผ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค..
[Java] ์ œ๋„ค๋ฆญ(Generic) ๋ฌธ๋ฒ• ์ •๋ฆฌ: ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ, ์ œํ•œ๊นŒ์ง€
ยท
โ˜•Java/๐Ÿ“Java Programming
โœ… 1. ์ œ๋„ค๋ฆญ์ด๋ž€?public class Box { private T item; public void set(T item) { this.item = item; } public T get() { return item; }}public class Main { Box box = new Box(); box.set("String"); // ์ œ๋„ค๋ฆญ ์ด๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž…์€ String}ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์™ธ๋ถ€์—์„œ ์ง€์ •ํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค.์ฆ‰, ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•  ๋•Œ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ž๋ฃŒํ˜•์˜ ์ œํ•œ์„ ๋‘ ์œผ๋กœ์จ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ๊ฐ€์ง„๋‹ค.์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด, ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ์˜ค๋ฅ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.๋‹ค์–‘..
[Java] ์ต๋ช… ํด๋ž˜์Šค(Anonymous Class)
ยท
โ˜•Java/๐Ÿ“Java Programming
โœ… 1. ์ต๋ช… ํด๋ž˜์Šค๋ž€?"์ต๋ช…" + "ํด๋ž˜์Šค" ์ด๋ฆ„์ด ์—†๋Š” ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.์ผํšŒ์„ฑ์œผ๋กœ 1๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค์ด๋ฉฐ, ์ต๋ช… ํด๋ž˜์Šค ์ •์˜์™€ ๋™์‹œ์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.โœ… 1. ์ต๋ช… ํด๋ž˜์Šค ์‚ฌ์šฉ ๋ฐฉ๋ฒ•// ๋ถ€๋ชจ ํด๋ž˜์Šคclass Animal { public void sound() { System.out.println("๋™๋ฌผ์†Œ๋ฆฌ"); }}public class Main { public static void main(String[] args) { Animal dog = new Animal() { @Override public void sound() { Systme.out.println("๊ฐ•์•„์ง€ ..
[Java] ๋‹คํ˜•์„ฑ(polymorphism)
ยท
โ˜•Java/๐Ÿ“Java Programming
โœ… 1. ๋‹คํ˜•์„ฑ(1) ๋‹คํ˜•์„ฑ์ด๋ž€?๋‹คํ˜•์„ฑ(ploymorphism)์€ ํ•˜์œ„ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒ์œ„ ํด๋ž˜์Šค ํƒ€์ž…์œผ๋กœ ๋ฐ›๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.์‰ฝ๊ฒŒ๋งํ•ด, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•ด๋‹น ๊ฐ์ฒด์˜ ํƒ€์ž…์œผ๋กœ ๋ฐ›๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.ํ•˜์ง€๋งŒ, ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹คํ˜•์„ฑ์„ ํ™œ์šฉํ•ด ํ•ด๋‹น ๊ฐ์ฒด ํƒ€์ž…์ด ์•„๋‹Œ, ์ƒ์œ„ํด๋ž˜์Šค ํƒ€์ž…์œผ๋กœ ๋ฐ›์•„์„œ ์œ ์—ฐํ•˜๊ฒŒ ์ด์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹: Dog dog = new Dog();๋‹คํ˜•์„ฑ ์ ์šฉ ๋ฐฉ์‹: Animal dog = new Dog(); - ์ƒ์œ„ ํด๋ž˜์Šค๋กœ ์ฐธ์กฐ ํƒ€์ž…์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ. (2) ๋‹คํ˜•์„ฑ ์“ฐ๋Š” ์ด์œ public class Animal { public void sound() { System.out.println("๋™๋ฌผ์†Œ๋ฆฌ"); }}public class Cat extends..
[Java] ์ถ”์ƒํ™” - ์ถ”์ƒํด๋ž˜์Šค, ์ถ”์ƒ๋ฉ”์„œ๋“œ, ์ธํ„ฐํŽ˜์ด์Šค
ยท
โ˜•Java/๐Ÿ“Java Programming
โœ… 1. ์ถ”์ƒํด๋ž˜์Šคpublic abstract class Animal { public abstract void run(); // ์ถ”์ƒ ๋ฉ”์„œ๋“œ public void eat() { // ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ System.out.println("This animal eats food."); }}์ถ”์ƒ ํด๋ž˜์Šค๋Š” class ์•ž์— abstract ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™ํžŒ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.abstract ํ‚ค์›Œ๋“œ๋ฅผ ๋ช…์‹œํ•˜๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด ์ƒ์„ฑ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค๊ฐ€ ๋˜๋ฉฐ, ์ƒ์†์œผ๋กœ๋งŒ ์ด์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.์ถ”์ƒํด๋ž˜์Šค ๋‚ด๋ถ€์—๋Š” ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.์ถ”์ƒํด๋ž˜์Šค์—๋Š” ์ถ”์ƒ๋ฉ”์„œ๋“œ, ์ผ๋ฐ˜๋ฉ”์„œ๋“œ ๋‘˜ ๋‹ค ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.๊ตฌํ˜„ ํด๋ž˜์Šค๊ฐ€ ์ƒ์†์„ ๋ฐ›๊ฒŒ๋˜๋ฉด, ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„์„ ํ•ด์•ผํ•˜๊ณ , ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ๋Š” ์ƒ์†๊ณผ ๋™์ผ..