26个LinkedList用法示例大全以及与ArrayList/数组的相互转换
LinkedList類是雙向列表,列表中的每個(gè)節(jié)點(diǎn)都包含了對前一個(gè)和后一個(gè)元素的引用.
LinkedList的構(gòu)造函數(shù)如下
1. public LinkedList(): ?——生成空的鏈表
2. public LinkedList(Collection col): ?復(fù)制構(gòu)造函數(shù)
1、獲取鏈表的第一個(gè)和最后一個(gè)元素
import java.util.LinkedList;public class LinkedListTest{public static void main(String[] args) {LinkedList<String> lList = new LinkedList<String>();lList.add("1");lList.add("2");lList.add("3");lList.add("4");lList.add("5");System.out.println("鏈表的第一個(gè)元素是 : " + lList.getFirst());System.out.println("鏈表最后一個(gè)元素是 : " + lList.getLast());} }2、獲取鏈表元素??
for (String str: lList) {System.out.println(str); }3、從鏈表生成子表
List subl = lList.subList(1, 4);System.out.println(subl);lst.remove(2);System.out.println(lst);System.out.println(lList);?4、添加元素:添加單個(gè)元素
如果不指定索引的話,元素將被添加到鏈表的最后. public boolean add(Object element) public boolean add(int index, Object element) 也可以把鏈表當(dāng)初棧或者隊(duì)列來處理: public boolean addFirst(Object element) public boolean addLast(Object element) addLast()方法和不帶索引的add()方法實(shí)現(xiàn)的效果一樣. import java.util.LinkedList;public class LinkedListTest{public static void main(String[] a) {LinkedList list = new LinkedList();list.add("A");list.add("B");list.add("C");list.add("D");list.addFirst("X");list.addLast("Z");System.out.println(list);} }?5、刪除元素
public Object removeFirst() public Object removeLast() import java.util.LinkedList;public class MainClass {public static void main(String[] a) {LinkedList list = new LinkedList();list.add("A");list.add("B");list.add("C");list.add("D");list.removeFirst();list.removeLast();System.out.println(list);} }?6、使用鏈表實(shí)現(xiàn)棧效果
import java.util.LinkedList; public class MainClass {public static void main(String[] args) {StackL stack = new StackL();for (int i = 0; i < 10; i++)stack.push(i);System.out.println(stack.top());System.out.println(stack.top());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());} } class StackL {private LinkedList list = new LinkedList();public void push(Object v) {list.addFirst(v);}public Object top() {return list.getFirst();}public Object pop() {return list.removeFirst();} }7、使用鏈表來實(shí)現(xiàn)隊(duì)列效果
import java.util.LinkedList; public class MainClass {public static void main(String[] args) {Queue queue = new Queue();for (int i = 0; i < 10; i++)queue.put(Integer.toString(i));while (!queue.isEmpty())System.out.println(queue.get());} } class Queue {private LinkedList list = new LinkedList();public void put(Object v) {list.addFirst(v);}public Object get() {return list.removeLast();}public boolean isEmpty() {return list.isEmpty();} }8、將LinkedList轉(zhuǎn)換成ArrayList
ArrayList<String> arrayList = new ArrayList<String>(linkedList);for (String s : arrayList) {System.out.println("s = " + s);}9、刪掉所有元素:清空LinkedList
lList.clear();10、刪除列表的首位元素
import java.util.LinkedList; public class Main {public static void main(String[] args) {LinkedList<String> lList = new LinkedList<String>();lList.add("1");lList.add("2");lList.add("3");lList.add("4");lList.add("5");System.out.println(lList);//元素在刪除的時(shí)候,仍然可以獲取到元素Object object = lList.removeFirst();System.out.println(object + " has been removed");System.out.println(lList);object = lList.removeLast();System.out.println(object + " has been removed");System.out.println(lList);} }11、根據(jù)范圍刪除列表元素
import java.util.LinkedList; public class Main {public static void main(String[] args) {LinkedList<String> lList = new LinkedList<String>();lList.add("1");lList.add("2");lList.add("3");lList.add("4");lList.add("5");System.out.println(lList);lList.subList(2, 5).clear();System.out.println(lList);} }12、刪除鏈表的特定元素
import java.util.LinkedList; public class Main {public static void main(String[] args) {LinkedList<String> lList = new LinkedList<String>();lList.add("1");lList.add("2");lList.add("3");lList.add("4");lList.add("5");System.out.println(lList);System.out.println(lList.remove("2"));//刪除元素值=2的元素System.out.println(lList);Object obj = lList.remove(2); //刪除第二個(gè)元素System.out.println(obj + " 已經(jīng)從鏈表刪除");System.out.println(lList);} }13、將LinkedList轉(zhuǎn)換為數(shù)組,數(shù)組長度為0
import java.util.LinkedList; import java.util.List; public class Main {public static void main(String[] args) {List<String> theList = new LinkedList<String>();theList.add("A");theList.add("B");theList.add("C");theList.add("D");String[] my = theList.toArray(new String[0]);for (int i = 0; i < my.length; i++) {System.out.println(my[i]);}} }14、將LinkedList轉(zhuǎn)換為數(shù)組,數(shù)組長度為鏈表長度
import java.util.LinkedList; import java.util.List; public class Main {public static void main(String[] args) {List<String> theList = new LinkedList<String>();theList.add("A");theList.add("B");theList.add("C");theList.add("D");String[] my = theList.toArray(new String[theList.size()]);for (int i = 0; i < my.length; i++) {System.out.println(my[i]);}} }15、將LinkedList轉(zhuǎn)換成ArrayList
import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class Main {public static void main(String[] args) {LinkedList<String> myQueue = new LinkedList<String>();myQueue.add("A");myQueue.add("B");myQueue.add("C");myQueue.add("D");List<String> myList = new ArrayList<String>(myQueue);for (Object theFruit : myList)System.out.println(theFruit);} }16、實(shí)現(xiàn)棧
import java.util.Collections; import java.util.LinkedList; public class Main {public static void main(String[] argv) throws Exception {LinkedList stack = new LinkedList();Object object = "";stack.addFirst(object);Object o = stack.getFirst();stack = (LinkedList) Collections.synchronizedList(stack);} }17、實(shí)現(xiàn)隊(duì)列
import java.util.LinkedList; public class Main {public static void main(String[] argv) throws Exception {LinkedList queue = new LinkedList();Object object = "";// Add to end of queuequeue.add(object);// Get head of queueObject o = queue.removeFirst();} }18 、同步方法
import java.util.Collections; import java.util.LinkedList; public class Main {public static void main(String[] argv) throws Exception {LinkedList queue = new LinkedList();Object object = "";queue.add(object);Object o = queue.removeFirst();queue = (LinkedList) Collections.synchronizedList(queue);} }19、查找元素位置
import java.util.LinkedList;public class Main {public static void main(String[] args) {LinkedList<String> lList = new LinkedList<String>();lList.add("1");lList.add("2");lList.add("3");lList.add("4");lList.add("5");lList.add("2");System.out.println(lList.indexOf("2"));System.out.println(lList.lastIndexOf("2"));} }20、替換元素
import java.util.LinkedList;public class Main {public static void main(String[] args) {LinkedList<String> lList = new LinkedList<String>();lList.add("1");lList.add("2");lList.add("3");lList.add("4");lList.add("5");System.out.println(lList);lList.set(3, "Replaced");//使用set方法替換元素,方法的第一個(gè)參數(shù)是元素索引,后一個(gè)是替換值System.out.println(lList);} }21、鏈表添加對象
import java.util.LinkedList; class Address {private String name;private String street;private String city;private String state;private String code;Address(String n, String s, String c, String st, String cd) {name = n;street = s;city = c;state = st;code = cd;}public String toString() {return name + " " + street + " " + city + " " + state + " " + code;} }class MailList {public static void main(String args[]) {LinkedList<Address> ml = new LinkedList<Address>();ml.add(new Address("A", "11 Ave", "U", "IL", "11111"));ml.add(new Address("R", "11 Lane", "M", "IL", "22222"));ml.add(new Address("T", "8 St", "C", "IL", "33333"));for (Address element : ml)System.out.println(element + "\n");} }22、確認(rèn)鏈表是否存在特定元素
import java.util.LinkedList;public class Main {public static void main(String[] args) {LinkedList<String> lList = new LinkedList<String>();lList.add("1");lList.add("2");lList.add("3");lList.add("4");lList.add("5");if (lList.contains("4")) {System.out.println("LinkedList contains 4");} else {System.out.println("LinkedList does not contain 4");}} }23、根據(jù)鏈表元素生成對象數(shù)組
Object[] objArray = lList.toArray(); for (Object obj: objArray) {System.out.println(obj); }24、鏈表多線程
import java.util.Collections; import java.util.LinkedList; import java.util.List; class PrepareProduction implements Runnable {private final List<String> queue;PrepareProduction(List<String> q) {queue = q;}public void run() {queue.add("1");queue.add("done");} } class DoProduction implements Runnable {private final List<String> queue;DoProduction(List<String> q) {queue = q;}public void run() {String value = queue.remove(0);while (!value.equals("*")) {System.out.println(value);value = queue.remove(0);}} } public class Main {public static void main(String[] args) throws Exception {List q = Collections.synchronizedList(new LinkedList<String>());Thread p1 = new Thread(new PrepareProduction(q));Thread c1 = new Thread(new DoProduction(q));p1.start();c1.start();p1.join();c1.join();} }25、優(yōu)先級鏈表(來自JBOSS)
import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.NoSuchElementException;public class BasicPriorityLinkedList {protected LinkedList[] linkedLists;protected int priorities;protected int size;public BasicPriorityLinkedList(int priorities) {this.priorities = priorities;initDeques();}public void addFirst(Object obj, int priority) {linkedLists[priority].addFirst(obj);size++;}public void addLast(Object obj, int priority) {linkedLists[priority].addLast(obj);size++;}public Object removeFirst() {Object obj = null;for (int i = priorities - 1; i >= 0; i--) {LinkedList ll = linkedLists[i];if (!ll.isEmpty()) {obj = ll.removeFirst();break;}}if (obj != null) {size--;}return obj;}public Object removeLast() {Object obj = null;for (int i = 0; i < priorities; i++) {LinkedList ll = linkedLists[i];if (!ll.isEmpty()) {obj = ll.removeLast();}if (obj != null) {break;}}if (obj != null) {size--;}return obj;}public Object peekFirst() {Object obj = null;for (int i = priorities - 1; i >= 0; i--) {LinkedList ll = linkedLists[i];if (!ll.isEmpty()) {obj = ll.getFirst();}if (obj != null) {break;}}return obj;}public List getAll() {List all = new ArrayList();for (int i = priorities - 1; i >= 0; i--) {LinkedList deque = linkedLists[i];all.addAll(deque);}return all;}public void clear() {initDeques();}public int size() {return size;}public boolean isEmpty() {return size == 0;}public ListIterator iterator() {return new PriorityLinkedListIterator(linkedLists);}protected void initDeques() {linkedLists = new LinkedList[priorities];for (int i = 0; i < priorities; i++) {linkedLists[i] = new LinkedList();}size = 0;}class PriorityLinkedListIterator implements ListIterator {private LinkedList[] lists;private int index;private ListIterator currentIter;PriorityLinkedListIterator(LinkedList[] lists) {this.lists = lists;index = lists.length - 1;currentIter = lists[index].listIterator();}public void add(Object arg0) {throw new UnsupportedOperationException();}public boolean hasNext() {if (currentIter.hasNext()) {return true;}while (index >= 0) {if (index == 0 || currentIter.hasNext()) {break;}index--;currentIter = lists[index].listIterator();}return currentIter.hasNext();}public boolean hasPrevious() {throw new UnsupportedOperationException();}public Object next() {if (!hasNext()) {throw new NoSuchElementException();}return currentIter.next();}public int nextIndex() {throw new UnsupportedOperationException();}public Object previous() {throw new UnsupportedOperationException();}public int previousIndex() {throw new UnsupportedOperationException();}public void remove() {currentIter.remove();size--;}public void set(Object obj) {throw new UnsupportedOperationException();}}}26、生成list的幫助類(來自google)
import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; public class Lists {private Lists() { }public static <E> ArrayList<E> newArrayList() {return new ArrayList<E>();}public static <E> ArrayList<E> newArrayListWithCapacity(int initialCapacity) {return new ArrayList<E>(initialCapacity);}public static <E> ArrayList<E> newArrayList(E... elements) {ArrayList<E> set = newArrayList();Collections.addAll(set, elements);return set;}public static <E> ArrayList<E> newArrayList(Iterable<? extends E> elements) {ArrayList<E> list = newArrayList();for(E e : elements) {list.add(e);}return list;}public static <E> LinkedList<E> newLinkedList() {return new LinkedList<E>();} }?
總結(jié)
以上是生活随笔為你收集整理的26个LinkedList用法示例大全以及与ArrayList/数组的相互转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java集合常见数据结构-栈/队列/数组
- 下一篇: Java transient关键字使用详