List의 구현체중 가장 많이 쓰이는 'ArrayList'에 대해서는 이전 포스트에 정리했다.
참고
오늘은 LinkedList에 대해서 정리할텐데, 이는 우리가 아주 잘 아는 자료구조 중 하나이다. 가장 일반적인 '단방향 LinkedList'의 경우, 하나의 노드의 포인터가 다음노드를 가리키는 식으로 되어있어 연결된(Linked) 구조를 갖는다.
예제 - LinkedList
(1) getFirtst , element , peek
LinkedList<Pet> pets = new LinkedList<Pet>(Pets.arrayList(5));
System.out.println(pets);
System.out.println("pets.getFirst() : " + pets.getFirst());
System.out.println("pets.element() : " + pets.element());
System.out.println("pets.peek() : " + pets.peek());
> 결과
[Rat, Manx, Cymric, Mutt, Pug]
pets.getFirst() : Rat
pets.element() : Rat
pets.peek() : Rat
일단 이 세 메소드는 동일하다. 가장 첫번째 요소를 반환한다. 단지 element() 메소드는 getFirst() 메소드의 'alias' 일뿐이고, peek() 메소드는 리스트가 비어있을 때 null을 반환한다.
(2) remove , removeFirst , poll
LinkedList<Pet> pets = new LinkedList<Pet>(Pets.arrayList(5));
System.out.println("pets.remove() : " + pets.remove());
System.out.println("pets.removeFirst() : " + pets.removeFirst());
System.out.println("pets : " + pets);
System.out.println("pets.poll() : " + pets.poll());
System.out.println("After pets.poll() : " + pets);
> 결과
[Rat, Manx, Cymric, Mutt, Pug]
pets.remove() : Rat
pets.removeFirst() : Manx
pets : [Cymric, Mutt, Pug]
pets.poll() : Cymric
After pets.poll() : [Mutt, Pug]
세 메소드 역시 동일하며 remove()는 removeFirst()의 alias이다. 가장 첫번째 요소를 삭제하면서 반환한다. poll() 메소드는 리스트가 비어있을때 null을 반환한다.
(3) addFirst , offer , add , addLast
LinkedList<Pet> pets = new LinkedList<Pet>(Pets.arrayList(5));
System.out.println(pets);
pets.addFirst(new Rat());
System.out.println("After addFirst() : " + pets);
pets.offer(Pets.randomPet());
System.out.println("After offer() : " + pets);
pets.add(Pets.randomPet());
System.out.println("After add() : " + pets);
pets.addLast(new Hamster());
System.out.println("After addLast() : " + pets);
> 결과
[Rat, Manx, Cymric, Mutt, Pug]
After addFirst() : [Rat, Rat, Manx, Cymric, Mutt, Pug]
After offer() : [Rat, Rat, Manx, Cymric, Mutt, Pug, Cymric]
After add() : [Rat, Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug]
After addLast() : [Rat, Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug, Hamster]
요소를 추가하는 메소드들이다. addFirst() 는 리스트의 맨앞에 요소를 추가하며, 나머지 세 메소드 offer(), add(), addLast()는 리스트의 끝에 요소를 추가한다.
(4) remove
LinkedList<Pet> pets = new LinkedList<Pet>(Pets.arrayList(5));
System.out.println(pets);
System.out.println("pets.removeLast() : " + pets.removeLast());
System.out.println("After removeLast() : " + pets);
>결과
[Rat, Manx, Cymric, Mutt, Pug]
pets.removeLast() : Pug
After removeLast() : [Rat, Manx, Cymric, Mutt]
remove() 메소드는 리스트의 맨끝 요소를 반환하며 삭제한다.