Java LinkedList
1 什么是Java LinkedList
Java LinkedList类使用双向链表来存储元素。它提供了一个链表数据结构。它继承了AbstractList类并实现List和Deque接口。
Java LinkedList的核心要点是:
- Java LinkedList类可以存储重复的元素。
- Java LinkedList类是有序的。
- Java LinkedList类是非同步的(线程不安全的)。
- 在Java LinkedList类中,由于不需要进行任何转换,因此处理速度很快。
- Java LinkedList类可以用作List,Stack或Queue。
2 Java LinkedList的层次结构
如上图所示,Java LinkedList类继承了AbstractSequentialList类并实现了List和Deque接口。
3 双向链表
在双向链表的情况下,我们可以从两侧添加或删除元素。
4 Java LinkedList的语法
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
5 Java LinkedList的构造方法
构造方法 | 描述 |
---|---|
LinkedList() | 用于构造一个空List。 |
LinkedList(Collection<? extends E> c) | 用于构造一个包含指定集合元素的List,这些元素按顺序由集合的迭代器返回。 |
6 Java LinkedList的方法
方法 | 描述 |
---|---|
boolean add(E e) | 用于将指定的元素附加到List的末尾。 |
void add(int index, E element) | 用于将指定的元素插入List中指定位置的索引处。 |
boolean addAll(Collection<? extends E> c) | 用于将指定集合中的所有元素附加到此List的末尾,以指定集合的迭代器返回它们的顺序。 |
boolean addAll(int index, Collection<? extends E> c) | 从List的指定位置开始,它用于附加指定集合中的所有元素。 |
void addFirst(E e) | 用于将给定元素插入List的开头。 |
void addLast(E e) | 用于将给定元素附加到List的末尾。 |
void clear() | 用于从List中删除所有元素。 |
Object clone() | 用于返回ArrayList的浅表副本。 |
boolean contains(Object o) | 如果List包含指定的元素,则用于返回true。 |
Iterator<E> descendingIterator() | 用于以相反的顺序在双端队列中返回元素上的迭代器。 |
E element() | 用于检索List的第一个元素。 |
E get(int index) | 用于返回List中指定位置的元素。 |
E getFirst() | 用于返回List中的第一个元素。 |
E getLast() | 用于返回List中的最后一个元素。 |
int indexOf(Object o) | 用于返回指定元素首次出现的List中的索引;如果List不包含任何元素,则返回-1。 |
int lastIndexOf(Object o) | 用于返回指定元素最后一次出现的List中的索引;如果List不包含任何元素,则返回-1。 |
ListIterator<E> listIterator(int index) | 从List中的指定位置开始,它用于按正确顺序返回元素的List迭代器。 |
boolean offer(E e) | 将指定的元素添加为List的最后一个元素。 |
boolean offerFirst(E e) | 将指定的元素插入List的开头。 |
boolean offerLast(E e) | 将指定的元素插入List的末尾。 |
E peek() | 检索List的第一个元素 |
E peekFirst() | 检索List的第一个元素;如果List为空,则返回null。 |
E peekLast() | 检索List的最后一个元素;如果List为空,则返回null。 |
E poll() | 检索并删除List的第一个元素。 |
E pollFirst() | 检索并删除List的第一个元素,如果List为空,则返回null。 |
E pollLast() | 检索并删除List的最后一个元素,如果List为空,则返回null。 |
E pop() | 从List表示的堆栈中弹出一个元素。 |
void push(E e) | 将元素压入List表示的堆栈。 |
E remove() | 用于检索和删除List的第一个元素。 |
E remove(int index) | 用于删除List中指定位置的元素。 |
boolean remove(Object o) | 用于删除List中指定元素的首次出现。 |
E removeFirst() | 从List中删除并返回第一个元素。 |
boolean removeFirstOccurrence(Object o) | 用于删除List中指定元素的首次出现(当从头到尾遍历List时)。 |
E removeLast() | 从List中删除并返回最后一个元素。 |
boolean removeLastOccurrence(Object o) | 删除List中最后一次出现的指定元素(当从头到尾遍历List时)。 |
E set(int index, E element) | 将List中指定位置的元素替换为指定元素。 |
Object[] toArray() | 用于以正确的顺序(从第一个元素到最后一个元素)返回包含List中所有元素的数组。 |
<T> T[] toArray(T[] a) | 返回一个数组,该数组包含按正确顺序排列的所有元素(从第一个元素到最后一个元素);返回数组的运行时类型是指定数组的运行时类型。 |
int size() | 用于返回List中的元素数。 |
7 Java LinkedList的例子
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java LinkedList的例子
*/
import java.util.*;
public class Demo{
public static void main(String args[]){
LinkedList<String> al=new LinkedList<String>();
al.add("eric");
al.add("jack");
al.add("mark");
al.add("lucy");
Iterator<String> itr=al.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
输出结果为:
eric
jack
mark
lucy
8 Java LinkedList添加元素
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java LinkedList的例子
*/
import java.util.*;
public class Demo{
public static void main(String args[]){
LinkedList<String> ll=new LinkedList<String>();
System.out.println("初始化LinkedList: "+ll);
ll.add("eric");
ll.add("jack");
ll.add("macy");
System.out.println("调用add(E e)方法后: "+ll);
//添加元素
ll.add(1, "mark");
System.out.println("调用add(int index, E element)方法后: "+ll);
LinkedList<String> ll2=new LinkedList<String>();
ll2.add("rose");
ll2.add("lucy");
//添加元素
ll.addAll(ll2);
System.out.println("调用addAll(Collection<? extends E> c)方法后: "+ll);
LinkedList<String> ll3=new LinkedList<String>();
ll3.add("John");
ll3.add("Paul");
//添加元素
ll.addAll(1, ll3);
System.out.println("调用addAll(int index, Collection<? extends E> c)方法后: "+ll);
//添加元素
ll.addFirst("lucas");
System.out.println("调用addFirst(E e)方法后: "+ll);
//添加元素
ll.addLast("Narci");
System.out.println("调用addLast(E e)方法后: "+ll);
}
}
输出结果为:
初始化LinkedList: []
调用add(E e)方法后: [eric, jack, macy]
调用add(int index, E element)方法后: [eric, mark, jack, macy]
调用addAll(Collection<? extends E> c)方法后: [eric, mark, jack, macy, rose, lucy]
调用addAll(int index, Collection<? extends E> c)方法后: [eric, John, Paul, mark, jack, macy, rose, lucy]
调用addFirst(E e)方法后: [lucas, eric, John, Paul, mark, jack, macy, rose, lucy]
调用addLast(E e)方法后: [lucas, eric, John, Paul, mark, jack, macy, rose, lucy, Narci]
9 Java LinkedList删除元素
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java LinkedList的例子
*/
import java.util.*;
public class Demo {
public static void main(String [] args)
{
LinkedList<String> ll=new LinkedList<String>();
ll.add("eric");
ll.add("jack");
ll.add("mark");
ll.add("lucy");
ll.add("macy");
ll.add("narci");
ll.add("rose");
ll.add("lucas");
ll.add("Paul");
ll.add("Jackson");
System.out.println("初始化LinkedList: "+ll);
//删除元素
ll.remove("Vijay");
System.out.println("调用remove(object)方法后: "+ll);
//删除元素
ll.remove(0);
System.out.println("调用remove(index)方法后: "+ll);
LinkedList<String> ll2=new LinkedList<String>();
ll2.add("Ravi");
ll2.add("Hanumat");
//添加元素
ll.addAll(ll2);
System.out.println("Updated list : "+ll);
//删除元素
ll.removeAll(ll2);
System.out.println("调用removeAll()方法后: "+ll);
//删除元素
ll.removeFirst();
System.out.println("调用removeFirst()方法后: "+ll);
//删除元素
ll.removeLast();
System.out.println("调用removeLast()方法后: "+ll);
//删除元素
ll.removeFirstOccurrence("Paul");
System.out.println("调用removeFirstOccurrence()方法后: "+ll);
//删除元素
ll.removeLastOccurrence("narci");
System.out.println("调用removeLastOccurrence()方法后: "+ll);
//删除元素
ll.clear();
System.out.println("调用clear()方法后: "+ll);
}
}
输出结果为:
初始化LinkedList: [eric, jack, mark, lucy, macy, narci, rose, lucas, Paul, Jackson]
调用remove(object)方法后: [eric, jack, mark, lucy, macy, narci, rose, lucas, Paul, Jackson]
调用remove(index)方法后: [jack, mark, lucy, macy, narci, rose, lucas, Paul, Jackson]
Updated list : [jack, mark, lucy, macy, narci, rose, lucas, Paul, Jackson, Ravi, Hanumat]
调用removeAll()方法后: [jack, mark, lucy, macy, narci, rose, lucas, Paul, Jackson]
调用removeFirst()方法后: [mark, lucy, macy, narci, rose, lucas, Paul, Jackson]
调用removeLast()方法后: [mark, lucy, macy, narci, rose, lucas, Paul]
调用removeFirstOccurrence()方法后: [mark, lucy, macy, narci, rose, lucas]
调用removeLastOccurrence()方法后: [mark, lucy, macy, rose, lucas]
调用clear()方法后: []
10 Java LinkedList反转元素
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java LinkedList的例子
*/
import java.util.*;
public class Demo{
public static void main(String args[]){
LinkedList<String> ll=new LinkedList<String>();
ll.add("eric");
ll.add("jack");
ll.add("rose");
//反转元素
Iterator i=ll.descendingIterator();
while(i.hasNext())
{
System.out.println(i.next());
}
}
}
输出结果为:
rose
jack
eric
热门文章
优秀文章