
프로그래머스에서 배열 문제를 풀다가 크기가 고정적이니까 답답한 점이 많았다
한 번 생성할 때 크기를 결정하면 더 이상 수정도 불가능하기 때문에 처음에 생성할 때가 중요하다
크기가 초과되면 데이터 저장 불가, 데이터를 삭제하면 해당 인덱스는 비어있어서 메모리 낭비
이러한 문제점을 해결하기 위해, 객체나 데이터를 효율적으로 관리 할 수 있는 자료구조들을 만들어놓았다 자바가!!!
자료구조들이 있는 라이버러리를 컬렉션 프레임워크라고 한다.
이 포스팅에서는 List에서 배워보도록 하자

List 컬렉션은 순서가 있고 중복을 허용하는 데이터의 묶음을 다루는 인터페이스get(index) 메서드를 통해 바로 접근 가능내부 구조 - 동적 배열(Array)
특징
사용 시기 - 데이터 조회가 빈번하게 일어나거나 추가 / 삭제는 리스트의 맨 뒤에서 주로 일어날 때 Best
내부 구조 - 이중 연결 리스트
특징
사용 시기 - 데이터 추가 / 삭제가 리스트의 중간에서 빈번하게 일어날 때 Best
ArrayList와 거의 동일)ArrayList와 모든 기능이 거의 같지만, 큰 차이점으로는 동기화를 지원ArrayList보다 성능이 느림Stack 클래스가 Vector를 상속 받아서 만들어짐import java.util.ArrayList;
import java.util.List;
// List<타입> 변수명 = new ArrayList<>(); //Arraylist 선언 방법
// List<타입> 변수명 = new LinkedList<>(); //LinkedList 선언 방법
List<String> fruits = new ArrayList<>();
fruits.add("사과");
fruits.add("바나나");
fruits.add("딸기");
String secondFruit = fruits.get(1);
System.out.println(fruits); // [사과, 바나나, 딸기]
System.out.println(secondFruit); // 바나나
ArrayListArrayListLinkedListimport java.util.*;
class Solution {
public int[] solution(int[] arr, int[] delete_list) {
List<Integer> answerList = new ArrayList<>();
for(int i = 0; i < arr.length; i++) {
answerList.add(arr[i]);
}
for(int i = 0; i < delete_list.length; i++) {
answerList.remove(Integer.valueOf(delete_list[i]));
}
int[] answer = new int[answerList.size()];
for(int i = 0; i < answerList.size(); i++) {
answer[i] = answerList.get(i);
}
return answer;
}
}