Java类集框架——LinkedList子类与Queue接口
2016-08-16 14:31
393 查看
学习目标:
掌握LinkedList与List接口的关系。掌握Queue接口的作用。
LinkedList子类与Queue接口
LinkedList表示的是一个链表的操作类,此类的定义如下:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Queue<E>, Cloneable, Serialzable。
Queue接口是Collection的子接口,此接口的定义如下:
public interface Queue<E> extends Collection<E>
Queue接口定义的方法:
1、public E element()
普通 找到链表的表头。
2、public boolean offer(E o) 普通 将指定元素增加到链表的表尾。
3、public E peek() 普通 找到但并不删除链表的头。
4、public E poll()
普通 找到并删除链表的头。
5、public E remove() 普通 检索并移除表头
注意:
(1)remove()与poll() 方法都是从队列中删除第一个元素。remove()的行为与Collection接口的版本类似,但是新的poll()方法在用在空集合调用时不会抛出异常,只是返回null。因此,新的方法更适合容易出现异常条件的情况。
(2)peek()与element() 用于在队列的头部查询元素。与remove()方法类似,队列为空时,element()抛出一个异常,而peek()返回null。
LinkedList中操作链表的部分方法:
1、public void addFirst(E o) 普通 在链表开头增加元素。
2、public void addLast(E o)
普通 在链表结尾增加元素。
3、public boolean offer() 普通 将指定元素增加到链表的结尾。
4、public E removeFirst() 普通 删除链表的第一个元素。
5、public E removeLast()
普通 删除链表的最后一个元素。
本身大量扩充了Queue接口和List接口的操作。所以,在使用时最好直接使用LinkedList类进行操作。
为链表的开头和结尾增加数据。
import java.util.LinkedList ; public class LinkedListDemo01{ public static void main(String args[]){ LinkedList<String> link = new LinkedList<String>() ; link.add("A") ; // 增加元素 link.add("B") ; // 增加元素 link.add("C") ; // 增加元素 System.out.println("初始化链表:" + link) ; link.addFirst("X") ; // 在开头增加数据 link.addLast("Y") ; // 在结尾增加数据 System.out.println("增加头和尾之后的链表:" + link) ; } };
对于链表也可以找到其表头:
import java.util.LinkedList ; public class LinkedListDemo02{ public static void main(String args[]){ LinkedList<String> link = new LinkedList<String>() ; link.add("A") ; // 增加元素 link.add("B") ; // 增加元素 link.add("C") ; // 增加元素 System.out.println("1-1、element()方法找到表头:" + link.element()) ; System.out.println("1-2、找完之后的链表的内容:" + link) ; System.out.println("2-1、peek()方法找到表头:" + link.peek()) ; System.out.println("2-2、找完之后的链表的内容:" + link) ; System.out.println("3-1、poll()方法找到表头:" + link.poll()) ; System.out.println("3-2、找完之后的链表的内容:" + link) ; } };
既然此类实现了Queue接口,那么来说就可以按照队列的方式进行FIFO的操作。
import java.util.LinkedList ; public class LinkedListDemo03{ public static void main(String args[]){ LinkedList<String> link = new LinkedList<String>() ; link.add("A") ; // 增加元素 link.add("B") ; // 增加元素 link.add("C") ; // 增加元素 System.out.print("以FIFO的方式输出:") ; for(int i=0;i<=link.size()+1;i++){ // 注意:size在出栈操作中不断减小,所以要不断加1 System.out.print(link.poll() +"、") ; } } };
总结:
1、实际上此集合中增加元素的操作都是一样的,因为是Collection的子类。
2、各个类有各个类自己的单独实现,只需要单独使用即可。
相关文章推荐
- java:类集框架conllection接口list,set
- JAVA | 51 - 类集框架 | List 接口
- Java:concurrent包下面的Collection接口框架图( CopyOnWriteArraySet, CopyOnWriteArrayList,ConcurrentLinkedQueue,BlockingQueue)
- Java类集框架之LinkedList源码剖析
- Java之集合框架 List接口的特有方法、迭代器的并发修改异常以及LinkedList特有方法
- Java类集框架之LinkedList源码剖析
- java类集框架(ArrayList,LinkedList,Vector区别)
- 13. Java类集 Part 1(类集、Collection接口、List接口、Set接口、SortedSet接口、集合的输出) ----- 学习笔记
- java类集框架(list)
- JAVA中的数据结构——集合类(线性表:Vector、Stack、LinkedList、set接口;键值对:Hashtable、Map接口<HashMap类、TreeMap类>)
- Java集合源码学习(17)_BlockingQueue接口的实现LinkedBlockingQueue
- Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator
- java的List接口的实现类 ArrayList,LinkedList,Vector 的区别
- Java中使用LinkedList实现Queue
- 学习笔记_毕向东 Java_集合框架_LinkedList 2014.7.22
- 【Java类集】_LinkedList类笔记(实例亲测)
- Java类集(List接口-Vector)
- 黑马程序员_JAVA学习日记_JAVA中API:集合框架1(Collection,List,Set及其子类和迭代器的应用)
- JAVA类集----List接口
- Java基础之集合框架(一)--Collection、List、LinkedList、HashSet