LinkedList

来源:互联网 发布:网络用语及图片 编辑:程序博客网 时间:2024/06/06 13:25

一、LinkedList常用方法

1、add(E e):在list的末尾追加元素e

2、addLast(E e):在list的末尾追加元素e

3、addFirst(E e):在list的头部插入元素e

4、remove(Object obj):移除元素obj

      remove(int index):移除指定索引上的元素

5.get(int index):获取指定索引上的元素

二:LinkedList底层采用双向链表实现

三:ArrayList和LinkedList的比较

二者是List的不同实现方式,实现原理不同,只是先使用时的效果上,看起来一样

1、ArrayList底层采用数组实现,LinkedList底层采用双向链表实现

2、当执行插入或者删除操作时,采用LinkedList比较好

3、当执行搜索操作时,采用ArrayList较好

4、当向ArrayList添加一个对象时,实际上就是将该对象放置到了ArrayList底层所维护的数组当中;当向LinkedList中添加一个对象时,实际上LinkedList内部会生成一个Entry对象,该Entry对象的结构为:

Entry{

Entry previous;

Object element;

Entry next;

}

其中Object类型的element是我们向LinkedList中所添加的元素,然后Entry又构造好了向前与向后的引用previous、next,最后将生成的这个Entry对象加入到了链表当中。简言之,Linkedlist中所维护的是一个个的Entry对象

四、LinkedList实现Stack

1、栈(Stack):限定仅在表尾进行查如何删除,后进先出的数据结构、JDK中有Stack的实现类,但是实现效果不是很好

2、用LinkedList实现栈(stack)

LinkedList list = new LinkedList();
public void push(Object o)
{
list.addLast(o);
}
public Object pop()
{
return list.removeLast();
}
public Object peek()//查看栈顶元素但不弹出
{
return list.peekLast();//peekLast在list为空时,会取出空元素,但是getLast在列表为空时会抛出异常
}
public boolean isEmpty()
{
return list.isEmpty();
}


五、LinkedList实现队列Queue

1、Queue 是一种先进先出的数据结构,JDK只提供了队列的接口,没有具体实现

2、LinkedList模拟实现Queue

private LinkedList list = new LinkedList();
public void put(Object o)
{
list.addLast(o);
}
public Object get()
{
return list.removeFirst();
}
public boolean isEmpty()
{
return list.isEmpty();
}



0 0
原创粉丝点击