------------------------android培训、java培训、期待与您交流-----------------------
LinkedList实现了List|接口,是基于链表数据结构的List容器,所以它的特点是插入和删除操作效率高,缺点是查询操作效率低,因为要指针挨个移动去查找
特有的方法:
addFirst()//添加新元素到前一个元素的头部
addLast()//添加新元素到前一个元素的尾部
getFirst()//获取链表头元素,但不删除元素,如果集合中没元素,则报NoSuchElementException
getLast()获取链表尾元素,但不删除元素,如果集合中没元素,则报NoSuchElementException
removeFirst()//获取链表头元素,并删除该元素,如果集合中没元素,则报NoSuchElementException
removeLast()//获取链表尾元素,并删除该元素,如果集合中没元素,则报NoSuchElementException
JDK1.6出现了替代方法:(与前面的一一对应)
offerFirst();
offerLast();
peekFirst();
peekLast();
pollFirst();
pollLast();
应用:用LinkedList模拟堆栈和队列数据结构
代码:
package com.itheima;
import java.util.LinkedList;
// 堆栈类
class Stack{
private LinkedList linked;
public Stack(){
linked = new LinkedList();
}
public void myAdd(Object o){
linked.addLast(o);
}
public Object myGet(){
return linked.removeLast();
}
public boolean isNull(){
return linked.isEmpty();
}
}
//队列类
class Queue{
private LinkedList linked;
public Queue(){
linked = new LinkedList();
}
public void myAdd(Object o){
linked.addLast(o);
}
public Object myGet(){
return linked.removeFirst();
}
public boolean isNull(){
return linked.isEmpty();
}
}
public class LinkedListDemo {
static void sopln(Object o){//对打印进行封装
System.out.println(o);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Stack stack = new Stack();//创建一个堆栈对象
stack.myAdd("teacher01");//添加元素
stack.myAdd("teacher02");
stack.myAdd("teacher03");
stack.myAdd("teacher04");
while(!stack.isNull()){//循环取出该堆栈内的元素
sopln(stack.myGet());
}
sopln("---------------");
Queue queue = new Queue();//创建一个队列对象
queue.myAdd("student01");//添加元素
queue.myAdd("student02");
queue.myAdd("student03");
queue.myAdd("student04");
while(!queue.isNull()){ //循环取出队列中的元素
sopln(queue.myGet());
}
}
}