===============
LinkedList(链表)特点:查询数度慢,增删速度快和ArrayList相反,内存地址之间是不连续的
LinkedList 的一个元素由2个部分组成,一个部分是存在我们的元素,另一部分是存在下一个元素的内存地址,那么下一个内存地址里面
存储了另一个元素,那么元素也分2部分,一部分是元素,另一部分是下一个元素的内存地址。其实搞了这么多挂,这些都是经常用的
简单的很,可以用递归把这些数据给遍历出来
因为LinkedList实现了Collection,List,Deque,Queue,所以可以操作队列和索引
所以ArrayList的方法除了它自身特有的几个方法(比如trimToSize()方法是缩减空间的),LinkedList都有
所以可以对照ArrayList的方法来查看LinkedList有哪些特有的方法
下面是ArraysList的方法
下面是LinkedList特有的方法,我们发现ArrayList是在Collection的基础上加上索引的操作
而LinkedList是在ArrayList上加上对头和尾的操作,且可以进行双端队列的操作
用LinkList来模拟堆栈,因为链表特有的方法太少,只要记住LinkList的特性就行了
class Test
{
public static void main(String[] args)
{
//使用我们自己创建的堆栈
MyStack stack1 = new MyStack();
stack1.add("你");
stack1.add("我");
stack1.add("他");
for(int i=0;i<stack1.size();i++)
{
System.out.println(stack1.pop());
}
// 上面为什么只输出了2个 ?
// 因为循环里面弹栈,size是时刻改变的,所以到最后size其实只有1个,因为从0开始,所以输出了2个
// 只需要把获取size写在循环外获取即可
}
}
//模拟堆栈
class MyStack
{
private LinkedList<Object> linkedList1;
public MyStack()
{
linkedList1 = new LinkedList<Object>();
}
public void add(Object o)
{
linkedList1.push(o);
}
public Object pop()
{
return linkedList1.pop();
}
public int size()
{
return linkedList1.size();
}
}