linkedlist集合在增删元素的时候效率高,linkedlist集合内部维护了一个单向循环链表

  linkedlist集合在增删元素的时候效率高,linkedlist集合内部维护了一个单向循环链表

  一、java常用集合:

  编辑

  二、LinkedList实现关系:

  编辑

  3.LinkedList的形状为Queue:3.1。简介:

  LinkedList的形状为Queue,以便将LinkedList用作队列:

  队列是一种特殊的线性表,只允许在表的前面删除,在表的后面插入。

  队列类似于人们排队(首先添加到队列中的元素将首先被取出)

  3.2.常用方法:

  编辑

  推荐使用黄框法。

  队列提供的所有方法以两种形式存在:

  一种是在操作失败时抛出异常,另一种是返回null或false(返回一个具体的值,取决于具体的操作)。案例:

  公共静态void main(String[] args) {

  队列整数que=新链接列表整数

  //1.向队列末尾添加一个元素

  que . offer(0);

  que . offer(1);

  que . offer(2);

  system . out . println(que);//输出结果:[0,1,2]

  //2.从que队列的头部取出一个元素(不从队列中删除它)

  system . out . println(que);//输出结果:[0,1,2]

  int top=que . peek();

  system . out . println( top= top);//输出结果:top=0

  system . out . println(que);//输出结果:[0,1,2]

  //3.从que队列的头部取出一个元素,并将其从队列中删除,(如果该队列为空,则返回null)

  system . out . println(que);

  int top=que . poll();

  system . out . println( top= top);

  system . out . println(que);

  }

  其他add()、element()和remove()方法的用途与offer()、peek()和poll()相同,但仍有区别。

  Offer()、add()区别:有些队列有大小限制,所以如果你想在一个满的队列中添加一个新的项目,多余的项目会被拒绝。这时候新的要约方式就可以起作用了。它没有抛出一个未检查的异常来调用add()方法,而是获得offer()返回的false。

  Poll(),remove()区别:remove()和poll()方法都从队列中删除第一个元素。remove()的行为类似于Collection接口的版本,但是新的poll()方法在用空集合调用时不会抛出异常,而只会返回null。因此,新方法更适用于异常情况。

  Peek(),element()区别:element()和peek()是队列中的第一个元素。类似于remove(),当队列为空时,element()抛出异常,而peek返回null。

  4.LinkedList的形状类似于Deque: 4.1。链表的形状像deque,可以作为一个Deque使用。

  Deque是一个双端队列,可以理解为双端队列。队列头和队列尾都可以插入或删除元素。

  public static void main(String[]args){

  Deque integer deque=新链表整数//定义

  deque . add first(2);//添加到队列的最前面

  deque . poll first();//删除头中的第一个元素(相当于poll())

  deque . peek first();//获取头的第一个元素(相当于peek())

  deque . add last(1);//在队列末尾添加(相当于add())

  deque . poll last();//删除末尾的第一个元素

  deque . peek last();//获取末尾的第一个元素

  }

  编辑

  4.2.LinkedList建模为Deque,可以作为栈使用。

  Queue接口还指定了push()和pop()以及peekFirst()和pollFirst()等堆栈方法(Java官方建议使用LinkedList作为堆栈,但不建议使用Stack)。

  public static void main(String[]args){

  deque Integer stack=new linked list();

  System.out.println (stack为空: stack . isempty());//确定堆栈是否为空

  stack . add first(12);//将元素存放到堆栈中(按下堆栈)

  System.out.println (stack为空: stack . isempty());//确定堆栈是否为空

  system . out . println(stack . peek first());//获取堆栈的顶部元素

  system . out . println(stack . poll first());//获取并移除堆栈的顶部元素

  System.out.println (stack为空: stack . isempty());//确定堆栈是否为空

  //注意:push和pop方法也可以调整为push和pop。

  //pop():弹出堆栈中的元素,即返回并移除队列头元素,相当于removeFirst()。如果队列中没有元素,将会发生NoSuchElementException。

  //push():将一个元素推入堆栈,也就是将一个元素添加到队列头,相当于addFirst()。如果元素为空,则出现NPE,

  //如果堆栈空间有限,push()会生成IllegalStateException。

  }

  其他:

  ArrayDeque:基于array的线性双向队列,通常作为堆栈或队列使用,但堆栈的效率没有LinkedList高。LinkedList:基于链表的链式双向队列,通常用作堆栈或队列,但队列的效率没有ArrayQueue高。

  zhaoYQ 2022-09-30 10:49

  版权归作者所有:原创作品来自博主wx630ad9d3ad6de,转载授权请联系作者,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: