LinkedList:
一、集合的体系:
—| Collection 单列集合的根接口
——| List 如果实现了List接口的集合类,具备的特点: 有序,可重复。
———| ArrayList:底层是维护了一个Object数组实现的, 特点: 查询速度快,增删慢。
———| LinkedList:底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。
———| Vector(了解即可)
——| Set 如果实现了Set接口的集合类, 具备的特点: 无序,不可重复。
二、Linkedlist特有的方法:
1、基础方法
addFirst(E e) 、addLast(E e)
getFirst() 、getLast()
removeFirst()、removeLast()
2、返回逆序的迭代器对象
descendingIterator() 返回逆序的迭代器对象
3、数据结构方法
1)栈:主要是用于实现堆栈数据结构的存储方式。
特点:先进后出
push()、pop()
2)队列(双端队列):为了让可以使用LinkedList模拟队列数据结构的存储方式。
特点:先进先出
offer()、poll()
三、机试题目: 使用LinkedList实现堆栈数据结构的存储方式与队列的数据结构存储方式。
1、模拟堆栈:
import java.util.LinkedList;
// 使用LinkedList模拟堆栈的数据结构存储方式
class StackList{
private LinkedList list;
public StackList(){
list = new LinkedList();
}
//进栈
public void add(Object o){
list.push(o);
}
//弹栈 : 把元素删除并返回。
public Object pop(){
return list.pop();
}
//获取元素个数
public int size(){
return list.size();
}
}
public class Demo5 {
public static void main(String[] args){
StackList list = new StackList();
list.add("Tom");
list.add("Endeavor");
list.add("Derek");
/*
* 输出结果为:Derek,Endeavor,
* 缺少一个的原因是,每次弹出,list.size()的值都会减一
*/
/*for(int i=0;i<list.size();i++){
System.out.print(list.pop()+",");
}*/
/*
* 正确输出方式
* 输出结果为:Derek,Endeavor,Tom,
*/
int size = list.size();
for(int i=0;i<size;i++){
System.out.print(list.pop()+",");
}
}
}
2、模拟队列: