개발 지식 기록/JAVA

[메서드 정리] LinkedList

엉망진창좌충우돌 2023. 8. 18. 18:48

◎ boolean add(Object o) / void add(int index, Objcect element)

지정된 객체를 LinkedList의 끝에 추가, index가 있으면 해당 index에 element 추가

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
System.out.println(list);//[A, B, D, C]

 

◎ addAll(Collection c) / addAll(int index,Collection c)

주어진 컬렉션에 포함된 모든 요소를 LinkedList의 끝에 추가한다. index가 있을 경우 해당 index에 추가

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
System.out.println(list);//[A, B, D, C]

ArrayList<String> list2 = new ArrayList<>();
list2.add("가");
list2.add("나");
list2.add("다");
list2.add("라");
list2.add("마");
list2.add("바");

list.addAll(2,list2);
System.out.println(list);//[A, B, 가, 나, 다, 라, 마, 바, D, C]

 

◎ clear

LinkedList의 모든 요소를 삭제

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
list.clear()
System.out.println(list);//[]

 

◎ contains(Object o) / containsAll(Collection c)

지정된 객체가 LinkedList에 포함되었는지 알려줌/ 지정된 컬렉션의 모든 요소가 포함되었는지 알려줌

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
System.out.println(list);//[A, B, D, C]

ArrayList<String> list2 = new ArrayList<>();
list2.add("A");
list2.add("B");
list2.add("C");
list2.add("D");
System.out.println(list.containsAll(list2)); // true
System.out.println(list.contains("C"));//true

 

◎ get(int index) 

지정된 index의 객체를 반환

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
System.out.println(list.get(3));//C

 

◎ indexOf / lastIndexOf

지정된 객체가 저장된 위치를 반환/ 지정된 객체가 저장된 위치를 끝부터 검색해서 반환

없으면 -1 반환

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
list.add("B");
list.add("A");
list.add("E");
System.out.println(list);//[A, B, D, C, B, A, E]
System.out.println(list.indexOf("B"));//1
System.out.println(list.lastIndexOf("B"));//4

 

◎ isEmpty

LinkedList가 비어있는지 알려준다.

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
list.clear()
System.out.println(list.isEmpty());//true

 

◎ remove(int index) /remove (Object o) / removeAll(Collection c)

지정된 index에 위치한 객체를 제거 / 지정된 객체를 제거 / 지정된 컬렉션의 요소와 일치하는 요스를 모두 제거

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
list.add("B");
list.add("A");
list.add("E");
System.out.println(list);//[A, B, D, C, B, A, E]
list.remove("A");
System.out.println(list);//[B, D, C, B, A, E]
list.remove(3);
System.out.println(list);//[B, D, C, A, E]
ArrayList<String> list2 = new ArrayList<>();
list2.add("A");
list2.add("B");
list.removeAll(list2);
System.out.println(list);//[D, C, E]

 

◎  retainAll(Collection c)

지정된 컬렉션의 모든 요소가 포함되어 있는지 확인

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
list.add("B");
list.add("A");
list.add("E");

ArrayList<String> list2 = new ArrayList<>();
list2.add("A");
list2.add("B");
System.out.println(list.retainAll(list2));//true
list2.add("H");
System.out.println(list.retainAll(list2));//false

 

◎ set(int index, Object element)

지정된 index의 객체를 주어진 객체로 바꾼다.

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
list.add("B");
System.out.println(list);//[A, B, D, C, B]
list.set(2,"H");
System.out.println(list);//[A, B, H, C, B]

 

◎ size

LinkedList에 저장된 객체의 수를 반환

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
list.add("B");
System.out.println(list.size());//5

 

◎ toArray

저장된 객체를 배열로 반환

LinkedList <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add(2,"D");
list.add("B");
System.out.println(list);//[A, B, D, C, B]
String[] str = list.toArray(new String[list.size()]);
for (String tmp:str) {
	System.out.print(tmp);
}//ABDCB

 

 


※ 여기부터는 Queue 인터페이스 구현하면서 추가된 부분

 

◎ element

LinkedList의 첫 번째 요소를 반환

Queue <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("B");
System.out.println(list.element());//A

 

◎ offer

지정된 객체를 LinkedList의 끝에 추가. 성공하면 true, 실패하면 false 반환

Queue <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("B");
list.offer("H");
System.out.println(list);//[A, B, C, B, H]

※ add와 offer 차이

기능적인 차이가 있는 것은 아니나 예외 처리 방식에서 차이가 있다.

  예외 발생 값 리턴
추가 add() offer(){성공 시 true,실패 시 false반환}
삭제 remove() poll(){없을 때 null반환}
검사 element() peek(){비어있을 때 null 반환}

 

◎ peek

LinkedList의 첫 번째 요소를 반환

Queue <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("B");

System.out.println(list.peek());//A

 

◎ poll

LinkedList의 첫 번째 요소를 반환하고, LinkedList에서 제거

Queue <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("B");

System.out.println(list.poll());//A
System.out.println(list);//[B, C, B]

 

◎ remove()

LinkedList의 첫 번째 요소를 제거

Queue <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("B");
list.remove();
System.out.println(list);//[B, C, B]

 


※ 여기부터는 Deque 인터페이스 구현하면서 추가된 부분

 

◎ addFirst / addLast

LinkedList 맨 앞에 객체를 추가 / LinkedList 맨 끝에 객체를 추가

Deque <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("B");
list.addFirst("H");
list.addLast("J");
System.out.println(list);//[H, A, B, C, B, J]

 

◎ getFirst / getLast

LinkedList의 첫 번째 요소를 반환 / LinkedList의 마지막 요소를 반환

Deque <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("B");
list.addFirst("H");
list.addLast("J");
System.out.println(list.getFirst());//H
System.out.println(list.getLast());//J

 

◎ offerFirst / offerLast

LinkedList LinkedList 맨 앞에 객체를 추가. 성공하면 true실패하면 false / LinkedList 맨 끝에 객체를 추가. 성공하면 true실패하면 false

Deque <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("B");
list.offerFirst("H");
list.offerLast("J");
System.out.println(list);//[H, A, B, C, B, J]

 

 

◎ peekFirst / peekLast

LinkedList의 첫 번째 요소를 반환 / LinkedList의 마지막 요소를 반환

Deque <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("B");
list.addFirst("H");
list.addLast("J");
System.out.println(list.peekFirst());//H
System.out.println(list.peekLast());//J

 

◎ pollFirst / pollLast

LinkedList 에서 첫 번째 요소를 반환하면서 제거 / LinkedList에서 마지막 요소를 반환하면서 제거

Deque <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("B");
list.pollFirst();
list.pollLast();
System.out.println(list);//[B, C]

 

◎ removeFirst / removeLast

LinkedList에서 첫 번째 요소를 제거 / LinkedList에서 마지막 요소를 제거

Deque <String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("B");
list.removeFirst();
list.removeLast();
System.out.println(list);//[B, C]

 

◎ removeFirstOccurrence / removeLastOccurrence

LinkedList에서 첫번째로 일치하는 객체를 제거 / LinkedList에서 마지막으로 일치하는 객체를 제거

Deque <String> list = new LinkedList<>();
list.add("B");
list.add("A");
list.add("B");
list.add("C");
list.add("A");
list.add("B");
list.add("A");
list.add("C");
list.add("A");
list.add("C");
list.add("B");
list.removeFirstOccurrence("A");
list.removeLastOccurrence("C");
System.out.println(list);//[B, B, C, A, B, A, C, A, B]

 

◎ push

addFirst와 동일

 

◎ pop

removeFirst와 동일