코딩테스트-알고리즘/자료구조

배열(Array)과 리스트(List)의 차이 + ArrayList

닉네임생각즁 2023. 12. 23. 09:03

 

문제를 풀다보면 배열에서 리스트로 바꿔줘야 가능한거도 있는데 왜 그래야하는지 둘 차이가 뭔지 아직 개념이 덜 잡혀서 힘들다 비슷해보이는데 뭐가 다른지,, 🤔🤔🤔 그래서 차이를 정리해보려한다

 

 

⭐ 공통점은 여러개의 데이터를 하나의 그룹으로 묶어서 관리하기 위한 자료구조라는것!!

 

⭐ 차이점

  • 저장 방식
    • 배열 - 식별자(인덱스)가 존재, 정해진 공간이 있음  
    • 리스트 - 식별자(인덱스)가 없음, 앞 요소가 삭제되면 새로 추가되는 요소가 그 공간에 저장될 수 있음
  • 크기 할당
    • 배열 - 생성 시 크기 할당 필수 ex) int[] n = new int[4] → 크기 고정 
    • 리스트 = 크기 할당 필요 없음 (자바에서는 1.5배씩 늘어남) → 가변적으로 공간 늘리거나 줄일 수 있음

 

⭐ 리스트는 쓰지 않는 메모리 할당이 많기 때문에 만약 크기가 정해져 있는 경우라면 배열이 더 효율적인 선택

  → 문제에서 크기가 정해지면 배열 쓰고, 크기 안 정해져있으먄 ArrayList 쓰면 됨

 

⭐ 배열의 크기 : length / 리스트의 크기 : size

 


 

⭐ ⭐ ⭐ ArrayList란??

 - 배열과 리스트의 장점을 합친 것

 - 배열의 특성인 index로 식별자 쓸 수 있음 + 리스트의 특성인 크기를 동적으로 사용할 수 있음

   → index를 사용할 수 있는 리스트라고 생각하면 됨

 

 - 선언

ArrayList<int> list1 = new Arraylist<>;
ArrayList<String> list2 = new Arraylist<>;

 

 - 추가

list2.add("a");

 

⭐ Array -> ArrayList

 

 1) for문 이용

String[] array = new String[3];
array[0] = "Test1";
array[1] = "Test2";
array[2] = "Test3";
ArrayList<String> arrayList = new ArrayList<>();
for(String temp : array){  
	arrayList.add(temp);
}

 

 2) Arrays 메서드 이용

String[] array = new String[3];
array[0] = "Test1";
array[1] = "Test2";
array[2] = "Test3";
ArrayList<String> arrayList = new ArrayList<>(Arrays.asList(array));

 

 

 

⭐ ArrayList -> Array

 

 1) for문 이용

ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("Test1");
arrayList.add("Test2");
arrayList.add("Test3");

String[] array = new String[arrayList.size()];
int size=0;
for(String temp : arrayList){  
	array[size++] = temp;
}

 

 2) List 메서드 이용

ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("Test1");
arrayList.add("Test2");
arrayList.add("Test3");
String[] array = arrayList.toArray(new String[arrayList.size()]);

 

'코딩테스트-알고리즘 > 자료구조' 카테고리의 다른 글

우선순위 큐 (Priority Queue)  (0) 2023.12.23