collections - LinkedList

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangbingfengf98/article/details/86361670

LinkedList parent class: 

Class AbstractSequentialList<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)
Summary of Queue methods
  Throws exception Returns special value
Insert add(e) offer(e)
Remove remove() poll()
Examine element() peek()
Comparison of Queue and Deque methods
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

3. http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/LinkedList.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

猜你喜欢

转载自blog.csdn.net/wangbingfengf98/article/details/86361670