_042_LinkedList

===============

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();
	}

}

猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/82758362