Java

[Effective Java] ์•„์ดํ…œ 42. ์ต๋ช… ํด๋ž˜์Šค๋ณด๋‹ค๋Š” ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.

quedevel 2023. 3. 21. 11:06
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽฏ ์•„์ดํ…œ 42. ์ต๋ช… ํด๋ž˜์Šค๋ณด๋‹ค๋Š” ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.

์˜ˆ์ „์—๋Š” ์ž๋ฐ”์—์„œ ํ•จ์ˆ˜ ํƒ€์ž…์„ ํ‘œํ˜„ํ•  ๋•Œ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜๋งŒ ๋‹ด์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

์ด๋Ÿฐ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ•จ์ˆ˜๊ฐ์ฒด๋ผ๊ณ  ํ•˜์—ฌ, ํŠน์ • ํ•จ์ˆ˜๋‚˜ ๋™์ž‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์ผ๋‹ค.


  • ์ต๋ช… ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ•จ์ˆ˜ ๊ฐ์ฒด๋กœ ์‚ฌ์šฉ - ๋‚ก์€ ๊ธฐ๋ฒ•์ด๋‹ค!

    public class Item43 {
      public static void main(String[] args) {
          List<String> list = new ArrayList<>();
          list.add("test3");
          list.add("te2st3");
          list.add("test4");
          list.add("5test3");
    
          Collections.sort(list, new Comparator<String>() {
              @Override
              public int compare(String o1, String o2) {
                  return Integer.compare(o1.length(), o2.length());
              }
          });
    
          list.forEach(System.out::println);
      }
    }

    ์ „๋žต ํŒจํ„ด์ฒ˜๋Ÿผ, ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ๊ฑฐ ๊ฐ์ฒด ์ง€ํ–ฅ ๋””์ž์ธ ํŒจํ„ด์—๋Š” ์ต๋ช… ํด๋ž˜์Šค๋ฉด ์ถฉ๋ถ„ํ–ˆ๋‹ค.


์ž๋ฐ”8์— ์™€์„œ ์ถ”์ƒ ๋ฉ”์„œ๋“œ ํ•˜๋‚˜์งœ๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํŠน๋ณ„ํ•œ ์˜๋ฏธ๋ฅผ ์ธ์ •๋ฐ›์•„ ํŠน๋ณ„ํ•œ ๋Œ€์šฐ๋ฅผ ๋ฐ›๊ฒŒ ๋˜์—ˆ๋‹ค.

์ง€๊ธˆ์€ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ผ ๋ถ€๋ฅด๋Š” ์ด ์ธํ„ฐํŽ˜์ด์Šค๋“ค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋žŒ๋‹ค์‹์„ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.


  • ๋žŒ๋‹ค์‹์„ ํ•จ์ˆ˜ ๊ฐ์ฒด๋กœ ์‚ฌ์šฉ - ์ต๋ช… ํด๋ž˜์Šค ๋Œ€์ฒด

    public class Item43 {
      public static void main(String[] args) {
          List<String> list = new ArrayList<>();
          list.add("test3");
          list.add("te2st3");
          list.add("test4");
          list.add("5test3");
    
          // 1
          Collections.sort(list, (s1, s2) -> Integer.compare(s1.length(), s2.length()));
    
          // 2
          Collections.sort(list, comparingInt(String::length));
    
          // 3 
          list.sort(comparingInt(String::length));
    
          list.forEach(System.out::println);
      }
    }
  • ํƒ€์ž…์„ ๋ช…์‹œํ•ด์•ผ ์ฝ”๋“œ๊ฐ€ ๋” ๋ช…ํ™•ํ•  ๋•Œ๋งŒ ์ œ์™ธํ•˜๊ณ ๋Š”, ๋žŒ๋‹ค์˜ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…์€ ์ƒ๋žตํ•˜์ž.


๋žŒ๋‹ค๋Š” ์ด๋ฆ„์ด ์—†๊ณ  ๋ฌธ์„œํ™”๋„ ๋ชปํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ ์ž์ฒด๋กœ ๋™์ž‘์ด ๋ช…ํ™•ํžˆ ์„ค๋ช…๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ฝ”๋“œ ์ค„ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋žŒ๋‹ค๋ฅผ ์“ฐ์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.


์ฐธ๊ณ  ์ž๋ฃŒ

Joshua Bloch, ใ€ŽEffective Java 3/Eใ€, ๊ฐœ์•ž๋งต์‹œ ์˜ฎ๊น€, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ธ์‚ฌ์ดํŠธ(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=

728x90
๋ฐ˜์‘ํ˜•