โ๏ธ ์ฝ๋ฉํ ์คํธ๋ฅผ ํ๋ฉด์ 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์ ์ฐจ์ด์ ๋ ํฌ์คํ ํด์ผ๊ฒ ๋ค.