์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
BEST

๋” ์ž๋ฐ”, Java 8

์ž๋ฐ” 8์— ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ๋“ค์€ ์ž๋ฐ”๊ฐ€ ์ œ๊ณตํ•˜๋Š” API๋Š” ๋ฌผ๋ก ์ด๊ณ  ์Šคํ”„๋ง ๊ฐ™์€ ์ œ 3์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋„ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ๋Œ€์˜ ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ž์‹ ์˜ ๊ธฐ์ˆ ๋กœ ๋งŒ๋“œ์„ธ์š”.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ฐฑ์—”๋“œ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋žŒ๋‹ค ๊ทธ๋ฆฌ๊ณ  ๋ฉ”์†Œ๋“œ ๋ ˆํผ๋Ÿฐ์Šค์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

  • ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ์™€ ์Šคํƒœํ‹ฑ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

  • Stream๊ณผ Optional์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

JAVA 8์„ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜๋Š” 
๊ฐ€์žฅ ๋˜‘๋˜‘ํ•œ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๐Ÿ™†๐Ÿปโ€โ™€ ์ด ๊ฐ•์˜์—์„œ๋Š” ์ž๋ฐ” 8์— ์ถ”๊ฐ€๋œ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ํ•™์Šตํ•ด ๋ด…๋‹ˆ๋‹ค.
์ž๋ฐ” 8์˜ ์ฝ”๋“œ๋ฅผ ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ , ์Šค์Šค๋กœ ์ž‘์„ฑํ•ด ๋ณด์„ธ์š”! ๐Ÿ™†๐Ÿปโ€โ™‚

๊ฐ•์˜ ์†Œ๊ฐœ ๐Ÿ‘จโ€๐Ÿ’ป

2014๋…„ 3์›”์— ์ฒ˜์Œ ์ถœ์‹œํ–ˆ๊ณ  6๋…„์ด ๋„˜๊ฒŒ ์ง€๋‚œ ์ง€๊ธˆ๋„ ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฒ„์ „์ธ ์ž๋ฐ” 8์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ” ๊ธฐ์ดˆ ๊ณต๋ถ€๋Š” ๋งˆ์ณค์ง€๋งŒ ๊ทธ๋ž˜๋„ ๋ญ”๊ฐ€ ์•„์ง ์ž๋ฐ”์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๊ฒ ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋ณผ ๋•Œ ์ƒ์†Œํ•œ ๋ฌธ๋ฒ•์ด ๋ณด์ธ๋‹ค๋ฉด ์•„๋งˆ๋„ ์ž๋ฐ” 8์— ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๋ฐ” 8๋กœ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๐Ÿ”๐Ÿด

์ž ๋ณด์‹œ์ฃ ! ์—ฌ๊ธฐ Chicken์ด๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ธฐ์„ ๋‹ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

public class KeesunChicken implements Chicken {

}

๋ณด์‹œ๋‹ค์‹œํ”ผ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ๊ตฌํ˜„ํ–ˆ์„ ๋ฟ, ์•„๋ฌด๋Ÿฐ ๋ฉ”์†Œ๋“œ๋„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜์ง€ ์•Š์•˜์ฃ .
ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๊ฒŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

public class App {

    public static void main(String[] args) {

        Chicken keesun = new KeesunChicken();

        Egg egg = keesun.create();

    }

}

๋„๋Œ€์ฒด Egg๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” create() ๋ฉ”์†Œ๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฑธ๊นŒ์š”?

์ž, ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด์‹œ์ฃ . ์—ฌ๊ธฐ ๋‹ญ ํ•œ ๋งˆ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค์„œ ๋ฐ˜๋ฐ˜ ์น˜ํ‚จ์ด ๋˜๊ณ  ์‹ถ์€ ๋‹ฌ๊ฑ€์„ ๋ณด์‚ดํ”ผ๊ณ  ์žˆ๋„ค์š”.

Chicken.takesCare(new Egg() {

    @Override

    public String wannaBe() {

        return "์–‘๋…๋ฐ˜ ํ›„๋ผ์ด๋“œ๋ฐ˜";

    }

});

์ด ์ฝ”๋“œ๋Š” ์ค„์—ฌ์„œ ์ด๋ ‡๊ฒŒ ์“ธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Chicken.takesCare(() -> "์–‘๋…๋ฐ˜ ํ›„๋ผ์ด๋“œ๋ฐ˜");

์–ด๋–ป๊ฒŒ ์ด๋ ‡๊ฒŒ Egg๋ผ๋Š” ํƒ€์ž…์„ ์“ฐ์ง€๋„ ์•Š๊ณ  ๊น”๋”ํ•˜๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹ ๊ฐ€์š”?

์ด๋ฒˆ์—๋Š” ๋‹ฌ๊ฑ€์„ ๋ถ„๋ฅ˜ํ•ด ๋ด…์‹œ๋‹ค.

List<EggWithColorAndSize> eggs = new ArrayList<>();

eggs.add(EggWithColorAndSize.of().size(3).color("yellow"));

eggs.add(EggWithColorAndSize.of().size(4).color("white"));

eggs.add(EggWithColorAndSize.of().size(3).color("white"));

eggs.add(EggWithColorAndSize.of().size(5).color("yellow"));

eggs.add(EggWithColorAndSize.of().size(3).color("brown"));

eggs.add(EggWithColorAndSize.of().size(4).color("yellow"));

์—ฌ๊ธฐ ๋ณด์ด๋Š” ๋‹ฌ๊ฑ€๋“ค ์ค‘์— ์ƒ‰์ด yellow์ธ ๋‹ฌ๊ฑ€๋งŒ ๊ณจ๋ผ์„œ ์‚ฌ์ด์ฆˆ ๋ณ„๋กœ ์ •๋ ฌํ•œ ๋‹ค์Œ, ๋‹ฌ๊ฑ€์˜ wannaBe๋ฅผ ์ถœ๋ ฅํ•ด ๋ด…์‹œ๋‹ค.
์ด ๊ฐ•์˜๋ฅผ ๋“ค์œผ์‹ ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

eggs.stream().filter(e -> e.getColor().equals("yellow"))

        .sorted(Comparator.comparingInt(EggWithColorAndSize::getSize))

        .map(EggWithColorAndSize::wannaBe)

        .forEach(System.out::println);

๋ณ„๋„์˜ ์“ฐ๋ ˆ๋“œ๋กœ ์•Œ์„ ๋‚ณ๋Š” ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ณ  ์•Œ์„ ๋‚ณ์œผ๋ฉด (์ฝœ๋ฐฑ์œผ๋กœ) ๋ง›์žˆ๊ฒŒ ๋จน๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋„ ์ดํ•ดํ•˜๊ณ  ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {

    System.out.println("๊ผฌ๊ธฐ์˜ค~ ๊ผฌ๊ผฌ๊ผฌ๊ผฌ~ " + Thread.currentThread().getName());

    return EggWithColorAndSize.of().size(5).color("white");

}).thenAccept((egg) -> {

    System.out.println("๋ƒ ๋ƒ ๋ƒ : " + egg.wannaBe());

});


future.get();

์ด๋ฐ–์—๋„ ์ž๋ฐ” 8์ด ์ œ๊ณตํ•˜๋Š” Date์™€ Time API, ์• ๋…ธํ…Œ์ด์…˜์— ์ƒ๊ธด ๋ณ€ํ™”, ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ๋ณ€ํ™” ๋“ฑ ์žฌ๋ฏธ์žˆ๋Š” ๋‚ด์šฉ์ด ๋งŽ์œผ๋‹ˆ ๋งŽ์€ ์ˆ˜๊ฐ• ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ํ•™์Šต์„ ๋งˆ์นœ ๊ฐœ๋ฐœ์ž ๋˜๋Š” ํ•™์ƒ

  • ์ž๋ฐ” 8์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ํ•™์Šตํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž ๋˜๋Š” ํ•™์ƒ

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ

์•ˆ๋…•ํ•˜์„ธ์š”
๋ฐฑ๊ธฐ์„ ์ž…๋‹ˆ๋‹ค.

91,204

๋ช…

์ˆ˜๊ฐ•์ƒ

4,049

๊ฐœ

์ˆ˜๊ฐ•ํ‰

2,009

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

20

๊ฐœ

๊ฐ•์˜

๋„ค์ด๋ฒ„์™€ ์•„๋งˆ์กด์„ ๊ฑฐ์ณ ํ˜„์žฌ Microsoft์—์„œ ์‹œ๋‹ˆ์–ด ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋กœ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•„์ธ์Šˆํƒ€์ธ์€ "๊ต์œก์ด๋ž€ ์‚ฌ์‹ค์„ ๊ฐ€๋ฅด์น˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ํž˜์„ ๊ธฐ๋ฅด๋Š” ๊ฒƒ์ด๋‹ค."๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋„ ๊ทธ ๋ง์— ๊นŠ์ด ๊ณต๊ฐํ•˜๋ฉฐ ๊ฐ•์˜๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ํŠœ๋ธŒ:
'๋ฐฑ๊ธฐ์„ ' ์ฑ„๋„์—์„œ ๊ฐœ๋ฐœ์ž ๊ณ ๋ฏผ ์ƒ๋‹ด ๋ฐ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์œ ์šฉํ•œ ์ง€์‹ ๊ณต์œ 
๋ฒˆ์—ญ: ์Šคํ”„๋ง ๋ฐ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ๊ด€๋ จ ์„œ์  ๋‹ค์ˆ˜ ๋ฒˆ์—ญ
์ €์ˆ : ์‰ฝ๊ฒŒ ๋”ฐ๋ผํ•˜๋Š” ์ž๋ฐ” ์›น ๊ฐœ๋ฐœ

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

23๊ฐœ โˆ™ (4์‹œ๊ฐ„ 56๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!