โœ๏ธ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ํ’€๋ฉด์„œ int[] ๋ฅผ List๋กœ ๋ณ€ํ™˜ํ•˜๋‹ค๊ฐ€ ๋งˆ์ฃผํ•œ ๋ฌธ์ œ์™€ ์•Œ๊ฒŒ๋œ ๋ฌธ๋ฒ•์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…

 

int[ ] to List<Integer>

int ๋ฐฐ์—ด์„ List๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•, ์ฆ‰ int ๋ฐฐ์—ด์— ๋‹ด๊ธด ์š”์†Œ๋ฅผ ๊ทธ๋Œ€๋กœ List<Integer> (=ArrayList<Integer>)ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์‹œ๋„ํ–ˆ์—ˆ๋‹ค.

 

โŒ Fail : Arrays.asList()๋กœ ๋ณ€ํ™˜

Arrays.asList()์— int ๋ฐฐ์—ด(int[])์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ทธ๋Œ€๋กœ ๋‹ด์œผ๋ฉด List<int[]>ํ˜•์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

// int ๋ฐฐ์—ด
int[] arr = {1,2,3,4};

// ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜
List<int[]> list = Arrays.asList(arr);

// ๊ฒฐ๊ณผ
System.out.println(list.size());                    // 1
System.out.println(list.get(0));                    // [I@36baf30c
System.out.println(Arrays.toString(list.get(0)));   // [1, 2, 3, 4]

int ๋ฐฐ์—ด์ธ arr์„ asList๋กœ ๋ณ€ํ™˜ํ–ˆ์„๋•Œ ๊ธฐ๋Œ€ํ•œ ๊ฑด arr์˜ ์š”์†Œ(1,2,3,4)๋ฅผ ๊ฐ€์ง„ List<Integer> ํƒ€์ž…์ด์ง€๋งŒ, List<int[]>๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.

๋‚ด๊ฐ€ ์›ํ•˜๋Š” List<Integer> ํƒ€์ž…์ด ์•„๋‹ˆ๋‹ค!

 

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด,

Arrays.asList()๋Š” primitive ํƒ€์ž…์„ Wrapper ํด๋ž˜์Šค๋กœ ํ˜•๋ณ€ํ™˜ํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค.

์ฆ‰, int ํƒ€์ž…์„ Integer๋กœ ํ˜•๋ณ€ํ™˜ํ•ด์ฃผ์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ์—,
primitive ํƒ€์ž…์˜ ๋ฐฐ์—ด์€ Arrays.asList()๋ฅผ ์‚ฌ์šฉํ•ด์„œ List๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋‹ค.

 

๋”ฐ๋ผ์„œ int ํƒ€์ž…์˜ ๋ฐฐ์—ด์€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฐฐ์—ด์—์„œ List๋กœ ๋ณ€ํ™˜ํ•ด์•ผํ•œ๋‹ค.

1) ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ 2) Stream์„ ์‚ฌ์šฉํ•ด์„œ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค.

 

โœ… Success : ๋ฐ˜๋ณต๋ฌธ or Stream ์‚ฌ์šฉํ•ด์„œ ๋ณ€ํ™˜

1. ๋ฐ˜๋ณต๋ฌธ

// int ๋ฐฐ์—ด
int[] arr = {1,2,3,4};

// ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜
List<Integer> list = new ArrayList<>();
for (int el: arr) {
    list.add(el);
}

// ๊ฒฐ๊ณผ
System.out.println(list.size());    // 4
System.out.println(list);           // [1, 2, 3, 4]

 

์œ„์ฒ˜๋Ÿผ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด int ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ list์— ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด List์— Integer ์š”์†Œ 4๊ฐœ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๋Š”๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. Stream 

Stream์€ ๋žŒ๋‹ค์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์œผ๋กœ, Java 8๋ถ€ํ„ฐ ์ง€์›๋œ๋‹ค.

// int ๋ฐฐ์—ด
int[] arr = {1,2,3,4};

// ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());

// ๊ฒฐ๊ณผ
System.out.println(list.size());    // 4
System.out.println(list);           // [1, 2, 3, 4]
  • Arrays.stream(arr) : int[] → IntStream
  • boxed() : IntStream → Stream<Integer>
  • collect(Collectors.toList()) : Stream<Integer> → ArrayList<Integer>
    • Stream์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ˜• ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์›ํ•˜๋Š” ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜
    • collect: ์ŠคํŠธ๋ฆผ์˜ ์ตœ์ข…์—ฐ์‚ฐ์œผ๋กœ, ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ๋Š” Collector๋ฅผ ํ•„์š”๋กœ ํ•จ
    • Collectors.toList(): Collectors๋ฅผ ์ด์šฉํ•˜์—ฌ ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋“ค์„ List ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜
      *Collectors: ๋ฏธ๋ฆฌ ์ž‘์„ฑ๋œ ๋‹ค์–‘ํ•œ Collector๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” static ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ int[]๋ฅผ List<Integer>๋กœ ๋ณ€ํ™˜ํ•˜๋Š”๋ฐ ์„ฑ๊ณตํ–ˆ๋Š”๋ฐ,

๋‹ค์Œ์—๋Š” ๋ฐฐ์—ด์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋” ์•Œ์•„๋ณด๊ณ ,

Arrays.asList()์™€ new ArrayList<>()๋กœ ์ƒ์„ฑ๋œ List์˜ ์ฐจ์ด์ ๋„ ํฌ์ŠคํŒ… ํ•ด์•ผ๊ฒ ๋‹ค.

 

 

์ฐธ๊ณ  ํฌ์ŠคํŒ…

์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž์ฃผ ์‹ค์ˆ˜ ํ•˜๋Š” 10๊ฐ€์ง€ - 1

[JAVA] For๊ณผ Stream์€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”๊ฑธ๊นŒ?

+ Recent posts