Java
[Java] Array 와 Array List의 차이 , 공통점
IGBR
2022. 2. 28. 13:45
Java 백준 문제를 풀던중 분명 Array와 ArrayList를 적재적소에 사용을 하면 효율적인 코딩이 가능할 것 같은데 아직 구분을 잘 못하고 있어서 정리하려고 한다.
대략적인 Array와 ArrayList의 차이
코드로 보는 Array와 ArrayList
import java.util.ArrayList;
public class ArrayAndArrayList
{
public static void main(String[] args)
{
// 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
// Array와 ArrayList의 선언 과 타입에서의 차이 (+ 크기 알아보기)
int[] numArray = { 1, 2, 3, 4, 4}; // 중복되는 원소를 추가할 수 있습니다.
// int[] numArray = { 1, "2", 3, 4, 4}; 에러! Array(배열)는 선언된 타입만 쓸 수 있습니다.Type Safety
System.out.println("Array는 .length로 배열의 크기를 알 수 있습니다. => "+numArray.length);
ArrayList numArrayList = new ArrayList(); // Generics가 없는 ArrayList 선언
numArrayList.add(1);
numArrayList.add(2.0); // ArrayList는 타입으로 부터 자유롭습니다.
numArrayList.add(3);
numArrayList.add(4);
numArrayList.add(4); // 중복되는 원소를 추가 할 수 있습니다.
ArrayList<Integer> numArrayListGenerics = new ArrayList<Integer>();
// ArrayList는 <>로 이루어진 Generics를 사용해주면 Type Safety
numArrayListGenerics.add(1);
numArrayListGenerics.add(2);
// numArrayListGenerics.add(2.0); 에러!
// Generics가 Integer 만 받고 있기 때문에 ArrayList라 할지라도 선언된 타입 이외에 받질 못합니다.
numArrayListGenerics.add(3);
numArrayListGenerics.add(4);
numArrayListGenerics.add(5);
System.out.println("ArrayList는 .size( )로 크기를 알 수 있습니다. => "
+ numArrayListGenerics.size());
// 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
// Array 와 ArrayList의 출력 방법
System.out.println("Array의 출력입니다.");
for ( int value : numArray)
System.out.println(value);
// Array는 numArray[index] 로 원하는 index의 값을 다룰 수 있습니다.
System.out.println("ArrayList의 출력입니다.");
// for ( int value : numArrayList) 에러 ! ArrayList는 for-each 구문으로 출력 할 수 없습니다.
// System.out.println(value);
for (int i = 0; i<numArrayList.size(); i++)
System.out.println(numArrayList.get(i));
// .get메소드를 통해 원하는 index의 값을 다룰 수 있습니다.
// 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
// Array는 다차원 배열이 가능하나 ArrayList는 불가합니다.
int[][] multiDemensionalArray = new int[2][3];
int n = 1;
// 값 넣어보기
for (int i = 0 ; i < 2; i++)
{
for(int j = 0 ; j < 3 ; j++)
{
multiDemensionalArray[i][j] = n;
n++;
}
}
// 출력해보기
for (int i = 0 ; i < 2; i++)
{
for(int j = 0 ; j < 3 ; j++)
System.out.println(multiDemensionalArray[i][j]);
}
}
}
3줄 요약
1. 데이터를 자주 추가하고 삭제한다 -> ArrayList
2. 크기가 가변적이어야 한다 -> ArrayList
3. 데이터 검색을 자주해야 하거나 다차원으로 구성해야 한다 -> Array