版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangbingfengf98/article/details/86361670
LinkedList parent class:
Class AbstractSequentialList<E>
- java.lang.Object
- java.util.AbstractCollection<E>
- java.util.AbstractList<E>
- java.util.AbstractSequentialList<E>
- java.util.AbstractList<E>
LinkedList adds methods to use it as a stack, a Queue or a double-ended queue (deque). Some of these methods are aliases or slight variations of each other, producing names familiar for a particular use (Queue , in particular).
For example:
// collections/LinkedListFeatures.java
// (c)2017 MindView LLC: see Copyright.txt
// We make no guarantees that this code is fit for any purpose.
// Visit http://OnJava8.com for more book information.
import java.util.*;
import typeinfo.pets.*;
public class LinkedListFeatures {
public static void main(String[] args) {
LinkedList<Pet> pets = new LinkedList<>(Pets.list(5));
System.out.println(pets);
// Identical:
System.out.println("pets.getFirst(): " + pets.getFirst());
System.out.println("pets.element(): " + pets.element());
// Only differs in empty-list behavior: // details see below code
System.out.println("pets.peek(): " + pets.peek()); // queue method
// Identical; remove and return the first element:
System.out.println("pets.remove(): " + pets.remove()); // queue method
System.out.println("pets.removeFirst(): " + pets.removeFirst());
// Only differs in empty-list behavior:
System.out.println("pets.poll(): " + pets.poll()); // queue method
System.out.println(pets);
pets.addFirst(new Rat());
System.out.println("After addFirst(): " + pets);
pets.offer(Pets.get()); // queue method
System.out.println("After offer(): " + pets);
pets.add(Pets.get());
System.out.println("After add(): " + pets);
pets.addLast(new Hamster());
System.out.println("After addLast(): " + pets);
System.out.println("pets.removeLast(): " + pets.removeLast());
}
}
/* Output:
[Rat, Manx, Cymric, Mutt, Pug]
pets.getFirst(): Rat
pets.element(): Rat
pets.peek(): Rat
pets.remove(): Rat
pets.removeFirst(): Manx
pets.poll(): Cymric
[Mutt, Pug]
After addFirst(): [Rat, Mutt, Pug]
After offer(): [Rat, Mutt, Pug, Cymric]
After add(): [Rat, Mutt, Pug, Cymric, Pug]
After addLast(): [Rat, Mutt, Pug, Cymric, Pug, Hamster]
pets.removeLast(): Hamster
*/
change above code like:
import java.util.*;
import typeinfo.pets.*;
public class LinkedListFeatures {
public static void main(String[] args) {
LinkedList<Pet> pets = new LinkedList<>(Pets.list(0));
System.out.println(pets);
// Identical
System.out.println("empty list. pets.peek(): " + pets.peek()); // [2]
System.out.println("pets.poll(): " + pets.poll()); // [2]
// Identical:
System.out.println("pets.element(): " + pets.element()); // [1]
System.out.println("pets.getFirst(): " + pets.getFirst()); // [1]
}
}
the output:
[]
empty list. pets.peek(): null
pets.poll(): null
Exception in thread "main" java.util.NoSuchElementException
at java.util.LinkedList.getFirst(LinkedList.java:244)
at java.util.LinkedList.element(LinkedList.java:663)
at LinkedListFeatures.main(LinkedListFeatures.java:16)
Throws exception | Returns special value | |
Insert | add(e) |
offer(e) |
Remove | remove() |
poll() |
Examine | element() |
peek() |
Queue Method |
Equivalent Deque Method |
add(e) |
addLast(e) |
offer(e) |
offerLast(e) |
remove() |
removeFirst() |
poll() |
pollFirst() |
element() |
getFirst() |
peek() |
peekFirst() |
references:
1. On Java 8 - Bruce Eckel
2. https://github.com/wangbingfeng/OnJava8-Examples/blob/master/collections/LinkedListFeatures.java
4. https://docs.oracle.com/javase/8/docs/api/java/util/AbstractSequentialList.html
5. https://docs.oracle.com/javase/8/docs/api/java/util/Queue.html
6. https://docs.oracle.com/javase/8/docs/api/
7. https://docs.oracle.com/javase/8/docs/api/java/util/Deque.html