1. Java 8์ ํ์ : ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
Java 8์ด ์ถ์๋๋ฉด์ ์ด ์ธ์ด๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ ๋ํ ๊ฐ๋ ฅํ ์ง์์ ์ป์์ต๋๋ค . ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์ค๋ซ๋์ ๊ธฐ๋ค๋ ค์จ ์ง์์ ์ป์๋ค๊ณ ๋งํ ์๋ ์์ต๋๋ค. ์ฝ๋๋ฅผ ์ฝ๊ธฐ๊ฐ ๋ ์ด๋ ค์ ์ง๋ง ์ฝ๋ฉ์ ๋ ๋นจ๋ผ์ก์ต๋๋ค ๐
Java๋ก ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ฐ๊ธฐ ์ ์ ๋ค์ ์ธ ๊ฐ์ง๋ฅผ ์ ์ดํดํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- OOP, ์์ ๋ฐ ์ธํฐํ์ด์ค( Java Core ํ์คํธ์ ๋ ๋ฒจ 1-2 ).
- ์ธํฐํ์ด์ค์ ๊ธฐ๋ณธ ๋ฉ์๋ ๊ตฌํ .
- ๋ด๋ถ ๋ฐ ์ต๋ช ํด๋์ค .
์ข์ ์์์ Java์์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ง์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ด ๋ชจ๋ ๊ฒ์ ์ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋์ ์์์ ์ต๋ช ์ ๋ด๋ถ ํด๋์ค์ ๋ํด ์์ง ๋ชปํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ด๋ป๊ฒ ๋ฐฐ์ด๋๊ณ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ํํ ์ดํดํ๊ธฐ ์ด๋ ต๋ค๋ ๊ฒ์ ๋๋ค.
๋ค์ ๋ ์จ์์๋ ์๋ ๋ฐฉ์์ ๋ํ ๊น์ ์ดํด ์์ด Java์ ๊ธฐ๋ฅ์ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ฝ๊ณ ๊ฐ๋จํ์ง์ ์ค์ ์ ๋ ๊ฒ์ ๋๋ค.
Java์์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ชจ๋ ๋์์ค๋ฅผ ์ดํดํ๋ ๋ฐ ๋ช ๋ฌ์ด ๊ฑธ๋ฆฝ๋๋ค. ๋ช ์๊ฐ ์์ ์ด๋ฌํ ์ฝ๋๋ฅผ ์ฝ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์๊ฒ ์์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. I/O ์คํธ๋ฆผ์ด ์๋ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
2. I/O ์คํธ๋ฆผ: ์คํธ๋ฆผ ํ์ดํ๋ผ์ธ
์๋ ์์ ์ I/O ์คํธ๋ฆผ์ ๋ํด ๋ฐฐ์ด ๊ฒ์ ๊ธฐ์ตํ์ญ๋๊น: , InputStream
, OutputStream
๋ฑ ?Reader
Writer
์ ๊ฐ์ ๋ฐ์ดํฐ ์์ค ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์คํธ๋ฆผ ํด๋์ค๊ฐ ์์๊ณ ๋ฐ ์ FileInputSteam
๊ฐ์ ๋ค๋ฅธ ์คํธ๋ฆผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์ค๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ด ์์์ต๋๋ค .InputStreamReader
BufferedReader
์ด๋ฌํ ์คํธ๋ฆผ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์ผ๋ก ๊ตฌ์ฑ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
FileInputStream input = new FileInputStream("c:\\readme.txt");
InputStreamReader reader = new InputStreamReader(input);
BufferedReader buff = new BufferedReader(reader);
String text = buff.readLine();
์ฝ๋์ ์ฒ์ ๋ช ์ค์์ Stream
๊ฐ์ฒด ์ฒด์ธ์ ๊ตฌ์ฑํ๊ณ ์๋ค๋ ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์์ง ํ์ดํ๋ผ์ธ์ ํต๊ณผํ์ง ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ์ฆ์ buff.readLine()
๋ค์๊ณผ ๊ฐ์ ์ผ์ด ๋ฐ์ํฉ๋๋ค.
- ๊ฐ์ฒด ๋ ๊ฐ์ฒด ์ ๋ฉ์๋๋ฅผ
BufferedReader
ํธ์ถํฉ๋๋ค.read()
InputStreamReader
- ๊ฐ์ฒด ๋ ๊ฐ์ฒด ์ ๋ฉ์๋๋ฅผ
InputStreamReader
ํธ์ถํฉ๋๋ค.read()
FileInputStream
- ๊ฐ์ฒด ๊ฐ ํ์ผ์์
FileInputStream
๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์์ํฉ๋๋ค.
์ฆ, read()
๋๋ ๊ฐ์ ๋ฉ์๋ ํธ์ถ์ ์์ํ ๋๊น์ง ์คํธ๋ฆผ ํ์ดํ๋ผ์ธ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๊ฐ ์ด๋ํ์ง ์์ต๋๋ค readLine()
. ์คํธ๋ฆผ ํ์ดํ๋ผ์ธ์ ๋จ์ํ ๊ตฌ์ฑ์ ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ํ์ง ์์ต๋๋ค. ์คํธ๋ฆผ ์์ฒด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์์ต๋๋ค. ๊ทธ๋ค์ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ์๋ง ์ฝ์ต๋๋ค.
์ปฌ๋ ์ ๋ฐ ์คํธ๋ฆผ
Java 8๋ถํฐ ์ปฌ๋ ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์คํธ๋ฆผ์ ๊ฐ์ ธ์ฌ ์ ์๊ฒ ๋์์ต๋๋ค(์ปฌ๋ ์ ๋ฟ๋ง ์๋๋ผ). ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ๊ฒ์ด ์๋๋๋ค. ์ค์ ๋ก ๋ณต์กํ ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ฒด์ธ์ ์ฝ๊ณ ๊ฐ๋จํ๊ฒ ๊ตฌ์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. ๊ทธ๋ ๊ฒ ํจ์ผ๋ก์จ ์ด์ ์ 5-10์ค์ด ๊ฑธ๋ ธ๋ ์ฝ๋๋ฅผ ์ด์ 1-2์ค๋ก ์์ฑํ ์ ์์ต๋๋ค.
๋ฌธ์์ด ๋ชฉ๋ก์์ ๊ฐ์ฅ ๊ธด ๋ฌธ์์ด์ ์ฐพ๋ ์:
๊ฐ์ฅ ๊ธด ๋ฌธ์์ด ์ฐพ๊ธฐ |
---|
|
|
3. Stream
์ธํฐํ์ด์ค
์คํธ๋ฆผ์ ๋ํ Java 8์ ํ์ฅ๋ ์ง์์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋ฉ๋๋ค Stream<T>
. ์ฌ๊ธฐ์ T
๋ ์คํธ๋ฆผ์์ ์ ๋ฌ๋๋ ๋ฐ์ดํฐ ์ ํ์ ๋ํ๋ด๋ ์ ํ ๋งค๊ฐ๋ณ์์
๋๋ค. ์ฆ, ์คํธ๋ฆผ์ ์ ๋ฌํ๋ ๋ฐ์ดํฐ ์ ํ๊ณผ ์์ ํ ๋
๋ฆฝ์ ์
๋๋ค.
์ปฌ๋ ์
์์ ์คํธ๋ฆผ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ํด๋น ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค stream()
. ์ฝ๋๋ ๋๋ต ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Stream<Type> name = collection.stream();
์ด ๊ฒฝ์ฐ ์ปฌ๋ ์
์ ์คํธ๋ฆผ์ ๋ฐ์ดํฐ ์์ค๋ก ๊ฐ์ฃผ๋๋ฉฐ Stream<Type>
๊ฐ์ฒด๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ํํ๋ก ์ปฌ๋ ์
์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋๊ตฌ๊ฐ ๋ฉ๋๋ค.
ArrayList<String> list = new ArrayList<String>();
Collections.addAll(list, "Hello", "how's", "life?");
Stream<String> stream = list.stream();
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ปฌ๋ ์
๋ฟ๋ง ์๋๋ผ ๋ฐฐ์ด ์์๋ ์คํธ๋ฆผ์ ์ป์ ์ ์์ต๋๋ค . ์ด๋ ๊ฒํ๋ ค๋ฉด ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผํฉ๋๋ค . ์๋ฅผ ๋ค์ด:Arrays.stream()
Stream<Type> name = Arrays.stream(array);
์ด ๊ฒฝ์ฐ ์ด๋ ์ด๋ ๋ผ๋ ์คํธ๋ฆผ ์ ๋ฐ์ดํฐ ์์ค๋ก ๊ฐ์ฃผ๋ฉ๋๋ค name
.
Integer[] array = {1, 2, 3};
Stream<Integer> stream = Arrays.stream(array);
๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ๋ฐ์ดํฐ๊ฐ ์ด๋๋์ง ์์ต๋๋ค Stream<Type>
. ์ฐ๋ฆฌ๋ ๋จ์ํ ์คํธ๋ฆผ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ์ ์์ํ๊ธฐ ์ํด ์คํธ๋ฆผ ๊ฐ์ฒด๋ฅผ ์ป์์ต๋๋ค.
GO TO FULL VERSION