문제를 풀다보면 배열에서 리스트로 바꿔줘야 가능한거도 있는데 왜 그래야하는지 둘 차이가 뭔지 아직 개념이 덜 잡혀서 힘들다 비슷해보이는데 뭐가 다른지,, 🤔🤔🤔 그래서 차이를 정리해보려한다
⭐ 공통점은 여러개의 데이터를 하나의 그룹으로 묶어서 관리하기 위한 자료구조라는것!!
⭐ 차이점
- 저장 방식
- 배열 - 식별자(인덱스)가 존재, 정해진 공간이 있음
- 리스트 - 식별자(인덱스)가 없음, 앞 요소가 삭제되면 새로 추가되는 요소가 그 공간에 저장될 수 있음
- 크기 할당
- 배열 - 생성 시 크기 할당 필수 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 |
---|