[JAVA] Array, ArrayList, Arrays$ArrayList
Array, ArrayList, Arrays$ArrayList
1. ๋น๊ต
| ํญ๋ชฉ | Array |
ArrayList |
Arrays$ArrayList |
|---|---|---|---|
| ์์ ํจํค์ง | java.lang |
java.util |
java.util.Arrays ๋ด๋ถ ํด๋์ค |
| ํฌ๊ธฐ ๋ณ๊ฒฝ | X | O | X |
| ์ ๋ค๋ฆญ ์ง์ | X | O (List<T>) |
O (List<T>) |
| ์๋ | ๋น ๋ฆ | ๋ณดํต | ๋น ๋ฆ (๋ฐฐ์ด์ ๊ฐ์ผ ํํ) |
| ๊ธฐ๋ณธ ๋ฉ์๋ | ์์ (length๋ง ์์) |
๋ง์ (add, remove) |
์ผ๋ถ๋ง ์ง์ (set, get) |
| ์ฌ์ฉ ์ฉ๋ | ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ | ๋์ ๋ฆฌ์คํธ | ๋ฐฐ์ด โ ๋ฆฌ์คํธ ๋ณํ ์ ํธ๋ฆฌ |
| ํน์ด์ฌํญ | new๋ก ์ง์ ์์ฑ |
๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด ์ฌ์ฉ | ์๋ณธ ๋ฐฐ์ด์ ๋ทฐ(view) ์ญํ (์ฝ๋ ์ฐธ๊ณ ) |
์ฝ๋
// 1) ArrayList
List<String> test1 = new ArrayList<>(Arrays.asList("๊ณค","ํค๋ฅด์","๋ ์ค๋ฆฌ์ค"));
System.out.println(test1);
System.out.println(test1.getClass());
//2) Array
String[] test2 = {"ํํฐ๊ฐ ๋์ด์", "ํํฐ ๋ผ์ด์ผ์ค", "๊ฐ์ง๊ณ ์ถ๋ค"};
System.out.println(Arrays.toString(test2));
System.out.println(test2.getClass());
//3) Arrays$ArrayList
List<String> test3 = Arrays.asList("์ฆ๊ฑฐ์ด ์ผ์ด", "ํ๋๋ ์๋ค๋", "๋๋ผ์ด ์ผ์ด๋ค");
System.out.println(test3);
System.out.println(test3.getClass());
// ๋ฐฐ์ด์ ๋ณต์ฌ๋ณธ์ด ์๋๋ผ,์ฐธ์กฐ
List<String> test4 = Arrays.asList(test2);
test2[2] = "ํ์์ ๋ถ์๋์ผ์ง";
System.out.println(test4);
[๊ณค, ํค๋ฅด์, ๋ ์ค๋ฆฌ์ค]
class java.util.ArrayList
[ํํฐ๊ฐ ๋์ด์, ํํฐ ๋ผ์ด์ผ์ค, ๊ฐ์ง๊ณ ์ถ๋ค]
class [Ljava.lang.String;
[์ฆ๊ฑฐ์ด ์ผ์ด, ํ๋๋ ์๋ค๋, ๋๋ผ์ด ์ผ์ด๋ค]
class java.util.Arrays$ArrayList
[ํํฐ๊ฐ ๋์ด์, ํํฐ ๋ผ์ด์ผ์ค, ํ์์ ๋ถ์๋์ผ์ง]
[์ฐธ๊ณ ] ๋ฐฐ์ด ํ์ ํ๊ธฐ
| ๋ฐฐ์ด ํ์ | getClass() ์ถ๋ ฅ |
์๋ฏธ |
|---|---|---|
int[] |
[I |
[๋ ๋ฐฐ์ด, I๋ int |
double[] |
[D |
D๋ double |
String[] |
[Ljava.lang.String; |
L์ ๊ฐ์ฒด, String ํด๋์ค |
int[][] |
[[I |
2์ฐจ์ ๋ฐฐ์ด |
String[][] |
[[Ljava.lang.String; |
2์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด |
2. ๋ฐฐ์ด์ ๋ฆฌ์คํธ๋ก ๋ณํ
- ํ์ ์ด ๊ฐ์ ๊ฒฝ์ฐ, `Arrays.asList(arr)โ๋ก ์ฆ์ ๋ณํ
- ๋ ํผ ํ์
์ผ๋ก ๋ณํํ๋ ๊ฒฝ์ฐ Stream์
boxed์ฌ์ฉint[] arr = {1, 2, 3}; List<Integer> list = IntStream.of(arr) .boxed() .collect(Collectors.toList());
3. ๋ฆฌ์คํธ๋ฅผ ๋ฐฐ์ด๋ก ๋ณํ
- ํ์
์ด ๊ฐ์ ๊ฒฝ์ฐ,
toArray(T[]::new)๋๋toArray(new T[0])์ฌ์ฉ - ํ๋ฆฌ๋ฏธํฐ๋ธ ํ์
์ผ๋ก ๋ณํํ๋ ๊ฒฝ์ฐ, Stream์
mapToInt(Integer::intValue)mapToDouble(Double::doubleValue)์ฌ์ฉ ํ,toArray()์ฌ์ฉ
//Interger -> Integer
List<Integer> list = new ArrayList<>(Arrays.asList(1,2,3,4));
Integer[] arr = list.toArray(new Integer[0]);
//Integer -> int
int[] brr = list.stream().mapToInt(Integer::intValue).toArray();
Leave a comment