[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();

Categories:

Updated:

Leave a comment