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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。