참고:https://coding-factory.tistory.com/551
https://coding-factory.tistory.com/552
일반적인 배열과 같은 순차 리스트 입니다.
배열과 달리 크기가 부족해지면 자동으로 부족한 크기만큼 용량을 늘립니다.
인덱스로 내부 데이터에 직접 접근이 가능합니다.
삭제나 추가가 잦을 경우 , 데이터들의 이동으로 인해 효율이 좋지 않습니다.
데이터가 크기를 넘어서는 순간, 큰 용량의 배열을 새로 만들고 기존 항목을 복사합니다.
//선언
ArrayList<String> arrayList = new ArrayList<>();
//초기 용량 지정(디폴트 값은 크기 10의 배열 생성)
ArrayList<String> arrayList = new ArrayList<>(20);
//순차적 추가
arrayList.add("나는");
//원하는 위치 추가
//기존 인덱스 위치부터 그 뒤로 하나씩 밀려난다.
arrayList.add(인덱스,"15살이고 싶다");
//수정
arrayList.set(인덱스 , "그건 불가능 해");
//삭제
arrayList.remove("나는");
//모든 값 제거
arrayList.clear();
//크기
arrayList.size();
//가져오기
arrayList.get(인덱스);
//값이 있는지 확인(true/false)
arrayList.contains("나는");
//값의 인덱스 번호 얻어오기 (없을 경우 -1)
arrayList.indexOf("15살이고 싶다");
각 노드가 데이터와 다음 데이터에 대한 주소값을 가지고 있습니다.
추가 및 삭제가 발생할 경우, 노드가 가지고 있는 주소값만 바꿔주기 때문에 데이터의 변경 작업이 많을 경우 유리합니다.
특정 요소에 접근할 때 처음부터 순차적으로 접근하기에 조회 속도는 느립니다.
내부에서 배열을 사용하지 않아 ArrayList 처럼 크기 이상이 될 경우 배열을 새로 생성하여 복사하지 않습니다.
//선언
LinkedList<String> linkedList = new LinkedList<>();
//맨앞에 추가
linkedList.addFirst("배고프다");
//맨뒤에 추가
linkedList.addLast("배고프다");
//추가(마지막에 추가)
linkedList.add("배고프다");
//원하는 위치 추가
linkedList.add(인덱스 , "배고프다");
//삭제(removeFirst() , removeLast()도 있음)
linkedList.remove("배고프다");
linkedList.remove(); //0번쨰 삭제.
//모두 삭제
linkedList.clear();
//수정
linkedList.set(인덱스 , "배고프다2");
//크기
linkedList.size();
//가져오기
linkedList.get(인덱스);
//값이 있는지 확인(true/false)
linkedList.contains("배고프다");
//값의 인덱스 번호 얻어오기 (없을 경우 -1)
linkedList.indexOf("배고프다");
Vector의 경우 ArrayList와 다 같지만, 차이점이 있다면 동기화를 지원하기에 생략하겠습니다.