연결리스트(linked list)
- 각 노드가 데이터와 포인터를 가지고 한 줄(선형)로 연결되어 있는 것
- 포인터가 다음의 노드를 연결

배열과 차이점
- 배열은 index를 사용, 연결리스트는 노드를 사용
- 배열의 크기는 고정, 크기 변경을 위한 많은 비용이 소모(새로운 배열을 만들고, 기존 데이터를 복사)
연결리스트 동적 크기, 삽입, 삭제 용이
연결리스트 단점
- 임의 액세스 허용 x, 첫번째 노드부터 순차적으로 액세스
- 배열에 비해 많은 메모리 필요, 포인터의 여분의 메모리 공간이 목록의 각 요소에 필요
선언
LinkedList li = new LinkedList();
LinkedList<LinkedListDemo> demo = new LinkedList<LinkedListDemo>();
LinkedList<Integer> i = new LinkedList<Integer>();
LinkedList<Integer> i2 = new LinkedList<>();
LinkedList<Integer> i3 = new LinkedList<Integer>(Arrays.asList(1, 2, 3));
LinkedList<String> s = new LinkedList<String>();
LinkedList<Character> ch = new LinkedList<Character>();
데이터 추가
ll.add("Hello");
ll.add("Welcome");
ll.add(1, "World");
데이터 수정
ll.set(1, "City");
데이터 삭제
ll.removeFirst();
ll.removeLast();
ll.remove();
ll.remove(2);
ll.clear();
데이터 저장
ll.get(1)