Java集合之LinkedList常見實例操作,實例說明
阿新 • • 發佈:2018-07-29
remove ati 使用 util 概念 dex bool 新增 obj 一.LinkedList常見操作
package List相關; /** * LinkedList 鏈接列表 * LinkedList:底層使用的鏈表數據結構。特點:增刪速度快,查詢速度稍慢; */ import java.util.Iterator; import java.util.LinkedList; class linkedlist_test { public static void main(String[] args){ LinkedList linkedlist = new LinkedList(); LinkedList linkedlist1 = new LinkedList(); linkedlist1.add("what"); // linkedlist1.add("zhangj"); /**增*/ System.out.println("------------新增操作------------"); //在尾部進行添加元素 linkedlist.add("what"); linkedlist.add("?"); //在指定位置添加元素 linkedlist.add(1,"now"); System.out.println(linkedlist); //在列表首位添加元素 linkedlist.addFirst("one"); //在列表尾部添加元素 linkedlist.addLast("last"); //在指定添加元素 linkedlist.addAll(1,linkedlist1); System.out.println(linkedlist); /**查*/ System.out.println("------------查詢操作------------"); System.out.println("linkedlist鏈表列表為:"+linkedlist); //獲取首位元素 Object obj1 = linkedlist.getFirst(); //獲取指定位置的元素 Object obj2 = linkedlist.get(2); //獲取尾部的元素 Object obj3 = linkedlist.getLast(); //查詢鏈表列表的長度(元素個數) int a1= linkedlist.size(); System.out.println("首位元素為:"+obj1+";第三個元素為:"+obj2+";尾部元素為:"+obj3+";內部元素個數為:"+a1); /**修改*/ System.out.println("------------修改操作------------"); System.out.println("修改之前的鏈表列表為:"+linkedlist); linkedlist.set(1,"what you"); System.out.println("修改之後的鏈表列表為:"+linkedlist); //遍歷列表 //通過while方式來遍歷 Iterator it1 = linkedlist.listIterator(); // while (it1.hasNext()){ // System.out.println("while:"+it1.next()); // } //通過for循環方式來遍歷 for(;it1.hasNext();){ System.out.println("for:"+it1.next()); } /**刪 * 在使用remove進行刪除時,在進行刪除操作的同時也會把此次刪除的對象取出來 * remove(intdex int)在進行刪除操作時,若index超出角標邊界,則會拋異常IndexOutOfBoundsException * 但是在使用poll類型進行操作時,若index超出角標邊界,則會返回null * */ System.out.println("------------刪除操作------------"); System.out.println("刪除開始的鏈表列表為:"+linkedlist); //removeFirstOccurrence,在linkedlist中指定元素第一個出現 linkedlist.add(1,"now"); System.out.println("-----begin-------------"+"linkedlist="+linkedlist); // linkedlist.removeFirstOccurrence("now"); //removeLastOccurrence,在linkedlist中指定元素第一個出現 linkedlist.removeLastOccurrence("now"); System.out.println("-----end---------------"+"linkedlist="+linkedlist); //刪除指定元素對象,有指定元素則刪除,無指定元素則不操作,返回值為Boolean類型 Object obj5 = linkedlist.remove("?"); System.out.println("刪除鏈表列表的元素為:"+obj5); //刪除指定索引位置的對象 linkedlist.remove(0); //按索引刪除首位元素,等價於linkedlist.remove(0); linkedlist.removeFirst(); //按索引刪除尾部元素 Object O = linkedlist.removeLast(); System.out.println(O); //刪除所有的元素(清空列表) linkedlist.clear(); //remove和poll刪除方法的比較 // linkedlist.remove(9); Object obj9=linkedlist.poll(); System.out.println("obj9="+obj9); System.out.println("刪除結束的鏈表列表為:"+linkedlist); //其他方法簡介,不作說明 // E peek() // 檢索但不刪除此列表的頭(第一個元素)。 // E peekFirst() // 檢索但不刪除此列表的第一個元素,如果此列表為空,則返回 null 。 // E peekLast() // 檢索但不刪除此列表的最後一個元素,如果此列表為空,則返回 null 。 // E poll() // 檢索並刪除此列表的頭(第一個元素)。 // E pollFirst() // 檢索並刪除此列表的第一個元素,如果此列表為空,則返回 null 。 // E pollLast() // 檢索並刪除此列表的最後一個元素,如果此列表為空,則返回 null 。 // E pop() // 從此列表表示的堆棧中彈出一個元素。 } }
二.一個實際中操作
概念簡單說明:
棧堆:元素先進後出,類似水杯裝水;
隊列:元素先進先出,類似水管輸水;
需求:實現一個類型棧堆或隊列的功能容器
1.封裝一個類似類型棧堆或隊列的功能容器
import java.util.LinkedList; public class linkedlist_test1 { /*實現類似棧堆或隊列功能的容器*/ private LinkedList linkedlist; //構造函數,一開始就生成一個鏈表隊列linkedlist linkedlist_test1(){ linkedlist = new LinkedList(); } //定義向鏈表隊列添加元素的功能 public void addElement(Object obj){ linkedlist.add(obj); } //定義一個類似棧堆功能(先進後出) public Object ZhanDui(){ return linkedlist.removeFirst(); } //定義一個類似隊列功能(先進先出) public Object DuiLie(){ return linkedlist.removeLast(); } //定義一個判斷linkedlsit是否為空的功能 public boolean isNull(){ return linkedlist.isEmpty(); }
2.調用封裝好的類
public class Tset{ public static void main(String[] args){ linkedlist_test1 test = new linkedlist_test1(); String array[] = {"what","you","want"}; test.addElement(1); test.addElement("you"); test.addElement("and"); test.addElement(array); //棧堆功能 // while (!test.isNull()){ // System.out.println(test.DuiLie()); // } //隊列功能 for(;!test.isNull();){ System.out.println(test.ZhanDui()); } } }
Java集合之LinkedList常見實例操作,實例說明