详解LinkedList实现类

LinkedList类是List接口的实现类,说明它可以根据索引来随机访问集合中的元素,同时,LinkedList还实现了Deque接口说明其可以被当作双端队列来使用,并且也可以当做栈来使用。

1.什么是Deque接口。

Deque接口是Queue接口的子接口,它代表一个双端队列,Deque接口中还定义了一些允许从两端来操作队列的方法。

 void add First ( Object e ) : 将指定元素插入该双端队列的开头 。
 void addLast ( Object e ) : 将指定元素插入该双端队列的末尾。

 Object getFirst ( ) : 获取但不删除双端队列的第一个元素系 。
 Object getLast ( ) : 获取但不删除双端队列的最后一个元素 。
 boolean offerFirst ( Object e ) : 将指定元素插入该双端队列的开头 。
 boolean offerLast ( Object e ) : 将指定元素插入该双端队列的末尾。

Object peekFirst ( ) : 获取但不删除该双端队列的第一个元素 ; 如果此双端队列为空 , 则返回 null .
 Object peeklast ( ) : 获取但不删除该双端队列的最后一个元素 ; 如果此双端队列为空 , 则返回 null .

Object pop ( ) ( 栈方法 ) : pop 出该双端队列所表示的栈的栈顶元素 。 相当于 removeFirst ( )
 void push ( Object e ) : 将一个元素 push 进该双端队列所表示的栈的栈顶 。 相当于addFirst(e).

 从上面方法中可以看出 , Deque 不仅可以当成双端队列使用 , 而且可以被当成栈来使用 , 因为该类
 里还包含了 pop ( 出栈 ) , push ( 入栈 ) 两个方法。

2.栈和队列的简单了解

栈的修改是按后进先出的原则进行。每次删除的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除


队列

只允许在表的一端front进行插入,而在另一端rear进行删除。


3.LinkedList集合使用简单演示

	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();
		//将字符串元素加入到队列的尾部
		list.offer("java");
		//将该字符串元素加入到栈的栈的顶部(相当于队列的头部)
		list.push("c");
		for(String num : list){
			System.out.print(num);//输出cjava
		}
		//将该字符串元素加入到队列头部(相当于栈的顶部)
		list.offerFirst("c#");
		//访问并不删除队列头部元素
		System.out.println(list.peekFirst());//c#
		//将栈顶元素弹出栈(相当于删除队列头部元素)
		list.pop();
		for(String num : list){
			System.out.print(num);//输出cjava
		}
	}

上面的代码演示了linkedlist作为双端队列,栈的用法。

4.LinkedList与ArrayList,Vector的比较

LinkedList和ArrayList的实现机制完全不同,ArrayList,Vector内部以数组的形式来保存集合中的元素,在随机访问集合元素时性能较好,但是LinkedList内部是以链表的形式来保存集合元素,因此在插入,删除元素时性能较好(只需改变指针所指的地址,而数组进行插入删除却需要改变许多角标),但是Vector实现了线程同步,其性能ArrayList还差。


猜你喜欢

转载自blog.csdn.net/naruto_c/article/details/78796969
今日推荐