Java SE 044 使用LinkedList实现Stack与Queue

(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

Java SE 044 使用LinkedList实现Stack与Queue

1.LinkedList与ArrayList

(1)LinkedList的add方法底层是将一个Entry类型的数据存放进去,即包含一个前驱地址引用、后继地址引用以及数据对象的地址引用。

(2)对于一个链表来说,它肯定有一个向前的引用,一个向后的引用,还有个数据本身,如果只是将数据放到链表里面了,引用就没有了,就无法找到下一个元素和前一个元素。因此LinkedList在实现的时候,它是在里面生成一个新的Entry这样一个对象,Entry这个类本身包含了三个部分,第一个是向前的引用,第二个是向后的引用,第三个就是数据,数据就是向链表里面增加的数据。它是用这个作为一个Entry类的成员变量,然后构造出来一个Entry对象,将新生成的Entry对象放到LinkedList里面。因此我们执行linkedlist.add(“aaa”),并不是将字符串儿的引用放到了LinkedList链表里面,而是将一个由字符串儿所构造成的Entry对象放到了LinkedList链表里面。

(3)而ArrayList是直接将数据放入到数组里面就可以了。

(4)总结:
当向ArrayList添加一个对象时,实际上就是将该对象放置到了ArrayList底层维护的数组当中,当向LinkedList中添加一个对象时,实际上LinkedList内部会生成一个Entry对象,该Entry对象的结构为:
Entry{
Entry previous;
Object data;
Entry next;
}
其中Object类型的元素element就是我们向LinkedList中所添加的元素,然后Entry又构造好了向前与向后的引用privious,next,最后将生成的这个Entry对象加入到了链表当中。
换句话说:LinkedList维护的是一个一个的Entry对象。
## 2.自定义队列(Queue)

package com.javase.linkedlist;

import java.util.LinkedList;

public class MyQueue {
    
    
	@SuppressWarnings("unchecked")
	private LinkedList list = new LinkedList();
	
	//将元素对象放到队列里面去
	@SuppressWarnings("unchecked")
	public void put(Object o){
    
    
		list.addLast(o);
	}
	
	//取元素
	public Object get(){
    
    
		Object o = list.getFirst();
		list.removeFirst();
		return o;
	}
	
	public boolean isEmpty(){
    
    
		return list.isEmpty();
	}
	
	public static void main(String[] args) {
    
    
		MyQueue myQueue = new MyQueue();
		myQueue.put(new Integer(1));
		myQueue.put(new Integer(2));
		myQueue.put(new Integer(3));
		
		System.out.println(myQueue.get());
		System.out.println(myQueue.get());
		System.out.println(myQueue.get());
		
		System.out.println(myQueue.isEmpty());
	}
}

猜你喜欢

转载自blog.csdn.net/xiogjie_67/article/details/108540780
044
今日推荐