LinkedList
배열의 단점, 크기변경불가능/비교적 추가 삭제에 시간이 많이 걸린다를 보완하기 위한 리스트 자료구조
모든 데이터가 서로 link한 형태로 구성
리스트의 각 요소 node들은 자신과 연결된 다음 요소에 대한 주소값과 데이터로 구성되어있다.
링크드 리스트는 이동방향이 단방향이기때문에 다음 요소에 대한 접근은 쉽지만 이전요소에 대한 접근은 어렵다.
이점을 보완한것이 더블 링크드 리스트.
LinkedList 클래스는 이름과 달리 더블 링크드리스트로 구현되어있다.
링크드리스트의 단점인 낮은 접근성을 높이기 위한 위함.
더블 링크드 리스트의 접근서을 보다 향상시킨것이 더블 써큘러 링크드 리스트
더블 링크드 리스트의 첫번째 요소와 마지막 요소를 서로 연결
LinkedList()
빈 LinkedList를 생성합니다.
LinkedList<String> list = new LinkedList<>();
System.out.println(list); // []
LinkedList(Collection c)
주어진 컬렉션의 요소를 포함하는 LinkedList를 생성합니다.
Collection<String> collection = new ArrayList<>();
collection.add("apple");
collection.add("banana");
LinkedList<String> list = new LinkedList<>(collection);
System.out.println(list); // [apple, banana]
boolean add(Object o)
리스트의 끝에 요소를 추가합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
System.out.println(list); // [apple]
void add(int index, Object element)
지정된 인덱스에 요소를 추가합니다.
LinkedList<String> list = new LinkedList<>();
list.add(0, "banana");
System.out.println(list); // [banana]
boolean addAll(Collection c)
지정된 컬렉션의 모든 요소를 리스트의 끝에 추가합니다.
LinkedList<String> list = new LinkedList<>();
Collection<String> collection = new ArrayList<>();
collection.add("apple");
collection.add("banana");
list.addAll(collection);
System.out.println(list); // [apple, banana]
booleadn addAll(int index, Collection c)
메서드는 지정된 인덱스부터 시작하여 지정된 컬렉션의 모든 요소를 리스트에 추가합니다. 추가되는 위치는 인덱스부터 시작하며, 추가한 후에는 기존 요소들이 오른쪽으로 이동됩니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
Collection<String> collection = new ArrayList<>();
collection.add("orange");
collection.add("grape");
list.addAll(1, collection);
System.out.println(list); // [apple, orange, grape, banana, cherry]
void clear()
리스트의 모든 요소를 제거합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
list.clear();
System.out.println(list); // []
boolean contains(Object o)
지정된 요소가 리스트에 포함되어 있는지 여부를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
boolean contains = list.contains("apple");
System.out.println(contains); // true
boolean containsAll(Collection c)
리스트가 지정된 컬렉션의 모든 요소를 포함하고 있는지 여부를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
Collection<String> collection = new ArrayList<>();
collection.add("apple");
boolean containsAll = list.containsAll(collection);
System.out.println(containsAll); // true
Object get(int index)
지정된 인덱스에 있는 요소를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
String element = list.get(0);
System.out.println(element); // apple
int indexOf(Object o)
지정된 요소의 첫 번째 인덱스를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
int index = list.indexOf("banana");
System.out.println(index); // 1
boolean isEmpty)
리스트가 비어 있는지 여부를 반환합니다.
LinkedList<String> list = new LinkedList<>();
boolean isEmpty = list.isEmpty();
System.out.println(isEmpty); // true
Lterator iterator()
리스트의 요소를 반복하는데 사용되는 Iterator를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " "); // apple banana
}
int lastIndexOf(Object o)
지정된 요소의 마지막 인덱스를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
list.add("apple");
int lastIndex = list.lastIndexOf("apple");
System.out.println(lastIndex); // 2
ListIterator listIterator()
리스트에 대한 ListIterator를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
ListIterator<String> listIterator = list.listIterator();
while (listIterator.hasNext()) {
System.out.print(listIterator.next() + " "); // apple banana
}
ListIterator listIterator(int index)
지정된 시작 인덱스부터 리스트에 대한 ListIterator를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
ListIterator<String> listIterator = list.listIterator(1);
while (listIterator.hasNext()) {
System.out.print(listIterator.next() + " "); // banana
}
Object remove(int index)
지정된 인덱스에 있는 요소를 제거합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
list.remove(0);
System.out.println(list); // [banana]
boolean remove (int index)
지정된 요소를 제거합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
list.remove("apple");
System.out.println(list); // [banana]
boolean removeAll(Collection c)
지정된 컬렉션에 포함된 모든 요소를 리스트에서 제거합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
Collection<String> collection = new ArrayList<>();
collection.add("apple");
list.removeAll(collection);
System.out.println(list); // [banana]
boolean retainAll(Collection c)
지정된 컬렉션에 포함된 요소만을 리스트에 유지하고 나머지 요소는 제거합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
Collection<String> collection = new ArrayList<>();
collection.add("apple");
list.retainAll(collection);
System.out.println(list); // [apple]
Object set(int index, Object element)
지정된 인덱스에 있는 요소를 새 요소로 대체합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.set(0, "banana");
System.out.println(list); // [banana]
int size()
리스트의 요소 수를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
int size = list.size();
System.out.println(size); // 2
List subList(int fromIndex, int toIndex)
지정된 범위의 뷰를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
List<String> subList = list.subList(1, 3);
System.out.println(subList); // [banana, cherry]
Object[] toArray()
리스트를 배열로 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
Object[] array = list.toArray();
System.out.println(Arrays.toString(array)); // [apple, banana]
Object[] toArray(Object[] a)
리스트를 지정된 배열에 복사합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
String[] array = list.toArray(new String[0]);
System.out.println(Arrays.toString(array)); // [apple, banana]
Object element()
큐의 맨 앞에 있는 요소를 반환하되 제거하지 않습니다.
LinkedList<String> queue = new LinkedList<>();
queue.add("apple");
queue.add("banana");
String element = queue.element();
System.out.println(element); // apple
boolean ofter(Object o)
큐에 요소를 추가합니다.
LinkedList<String> queue = new LinkedList<>();
boolean added = queue.offer("apple");
System.out.println(added); // true
Object peek()
큐의 맨 앞에 있는 요소를 반환하되 제거하지 않습니다.
LinkedList<String> queue = new LinkedList<>();
queue.add("apple");
queue.add("banana");
String peekedElement = queue.peek();
System.out.println(peekedElement); // apple
Object poll()
큐의 맨 앞에 있는 요소를 반환하고 제거합니다.
LinkedList<String> queue = new LinkedList<>();
queue.add("apple");
queue.add("banana");
String polledElement = queue.poll();
System.out.println(polledElement); // apple
Object remove()
큐의 맨 앞에 있는 요소를 반환하고 제거합니다.
LinkedList<String> queue = new LinkedList<>();
queue.add("apple");
queue.add("banana");
String removedElement = queue.remove();
System.out.println(removedElement); // apple
void addFirst(Object o)
리스트의 맨 앞에 요소를 추가합니다.
LinkedList<String> list = new LinkedList<>();
list.add("banana");
list.addFirst("apple");
System.out.println(list); // [apple, banana]
void addLast(Object o)
리스트의 맨 뒤에 요소를 추가합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.addLast("banana");
System.out.println(list); // [apple, banana]
Iterator descendingIterator()
리스트의 요소를 역순으로 반복하는데 사용되는 Iterator를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
Iterator<String> descendingIterator = list.descendingIterator();
while (descendingIterator.hasNext()) {
System.out.print(descendingIterator.next() + " "); // banana apple
}
Object getFirst()
리스트의 맨 앞에 있는 요소를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
String firstElement = list.getFirst();
System.out.println(firstElement); // apple
Object getLast()
리스트의 맨 뒤에 있는 요소를 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
String lastElement = list.getLast();
System.out.println(lastElement); // banana
boolean offerFirst(Object o)
리스트의 맨 앞에 요소를 추가합니다.
LinkedList<String> list = new LinkedList<>();
boolean added = list.offerFirst("apple");
System.out.println(added); // true
boolean offerLast(Object o)
리스트의 맨 뒤에 요소를 추가합니다.
LinkedList<String> list = new LinkedList<>();
boolean added = list.offerLast("banana");
System.out.println(added); // true
Object peekFirst()
리스트의 맨 앞에 있는 요소를 반환하되 제거하지 않습니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
String peekedFirstElement = list.peekFirst();
System.out.println(peekedFirstElement); // apple
Object peekLast()
메서드는 리스트의 맨 뒤에 있는 요소를 반환합니다. 이 메서드는 해당 요소를 제거하지 않고 반환합니다. 만약 리스트가 비어있다면 `null`을 반환합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
String lastElement = list.peekLast();
System.out.println(lastElement); // cherry
System.out.println(list); // [apple, banana, cherry]
Object pollFirst()
리스트의 맨 앞에 있는 요소를 반환하고 제거합니다.
String polledFirstElement = list.pollFirst();
System.out.println(polledFirstElement); // apple
System.out.println(list); // [banana]
Object pollLast()
리스트의 맨 뒤에 있는 요소를 반환하고 제거합니다.
String polledLastElement = list.pollLast();
System.out.println(polledLastElement); // banana
System.out.println(list); // []
Object pop()
리스트의 맨 앞에 있는 요소를 반환하고 제거합니다.
LinkedList<String> list = new LinkedList<>();
list.push("apple");
list.push("banana");
String poppedElement = list.pop();
System.out.println(poppedElement); // banana
System.out.println(list); // [apple]
void push(Object o)
리스트의 맨 앞에 요소를 추가합니다.
LinkedList<String> list = new LinkedList<>();
list.push("apple");
list.push("banana");
System.out.println(list); // [banana, apple]
Object removeFirst()
리스트의 맨 앞에 있는 요소를 반환하고 제거합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
String removedFirstElement = list.removeFirst();
System.out.println(removedFirstElement); // apple
System.out.println(list); // [banana]
Object removeLast()
리스트의 맨 뒤에 있는 요소를 반환하고 제거합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
String removedLastElement = list.removeLast();
System.out.println(removedLastElement); // banana
System.out.println(list); // [apple]
boolean removeFirstOccurrence(Object o)
리스트에서 처음으로 나타나는 지정된 요소를 제거합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
list.add("apple");
boolean removed = list.removeFirstOccurrence("apple");
System.out.println(removed); // true
System.out.println(list); // [banana, apple]
boolean removeLastOccurrence(Object o)
리스트에서 마지막으로 나타나는 지정된 요소를 제거합니다.
LinkedList<String> list = new LinkedList<>();
list.add("apple");
list.add("banana");
list.add("apple");
boolean removed = list.removeLastOccurrence("apple");
System.out.println(removed); // true
System.out.println(list); // [apple, banana]
'JAVA' 카테고리의 다른 글
컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스 Iterator, Listterator, Enumeration (0) | 2024.02.05 |
---|---|
LIFO인 Stack스텍, FIFO인 Queue큐, PriorityQueue와 Deque (0) | 2024.02.05 |
데이터의 저장순서가 유지되고 중복을 허용하는 ArrayList (0) | 2024.02.05 |
키과 값을 하나의 쌍으로 묵어서 저장하는 컬렉션 클래스, Map (0) | 2024.02.05 |
중복을 허용하면서 저장순서가 유지되는 List인터페이스 (0) | 2024.02.05 |