Linked List는 ArrayList와 다르게 데이터가 연속된 공간에 저장되지 않고 각 데이터 마다 다음 데이터를 향한 주소값을 가진다.
각 데이터는 노드라 불리며 배열에서 자주 삽입, 삭제가 이루어지는 경우 용이하여 ArrayList보다 선호된다.
하지만 ArrayList보다 검색에 있어서는 느리다는 단점이 있다.
ex) key에 영어값이 저장되어있고 value에 한글값이 저장되어있는 해쉬맵이 있다고 가정하자.
import java.util.LinkedList;
LinkedList list = new LinkedList(); //타입 미설정 Object로 선언된다.
LinkedList<Student> members = new LinkedList<Student>(); //타입설정 Student객체만 사용가능
LinkedList<Integer> num = new LinkedList<Integer>(); //타입설정 int타입만 사용가능
LinkedList<Integer> num2 = new LinkedList<>(); //new에서 타입 파라미터 생략가능
LinkedList<Integer> list2 = new LinkedList<Integer>(Arrays.asList(1,2)); //생성시 값추가
LinkedList<Integer> list = new LinkedList<Integer>();
list.addFirst(1); //가장 앞에 데이터 추가
list.addLast(2); //가장 뒤에 데이터 추가
list.add(3); //데이터 추가
list.add(1, 10); //index 1에 데이터 10 추가
// 값을 변경 할 때
list.set(1, "Hello"); // 1번 인덱스의 값을 "Hello"로 변경
LinkedList<Integer> list = new LinkedList<Integer>(Arrays.asList(1,2,3,4,5));
list.removeFirst(); //가장 앞의 데이터 제거
list.removeLast(); //가장 뒤의 데이터 제거
list.remove(); //생략시 0번째 index제거
list.remove(1); //index 1 제거
list.clear(); //모든 값 제거
System.out.print(list.size()); // list의 사이즈를 출력한다.
System.out.print(list.get(i)); // list의 i번째 인덱스를 출력한다.
System.out.print(list.contains("Hello")); // list에 "Hello" 값이 있는지 확인 후 true / false로 반환한다.
System.out.print(list.indexOf("Hello")); // list에 "Hello" 값에 해당하는 인덱스를 반환한다.(없으면 -1 반환)