HDUOJ---What Are You Talking About
阿新 • • 發佈:2022-05-05
LinkedList
特點
底層是連結串列,增刪快,查詢慢
實踐
package com.qianfeng.collection; import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; /** * 功能描述 * * @since 2022-05-07 */ public class LinkedListDemo { public static void main(String[] args) { LinkedList<Object> linkedList = new LinkedList<>(); Student s1 = new Student("ZhangSan", 1); Student s2 = new Student("LiSi", 2); Student s3 = new Student("WangWu", 3); // 新增資料 linkedList.add(s1); linkedList.add(s2); linkedList.add(s3); // 刪除資料 linkedList.remove(new Student("ZhangSan", 1)); // 遍歷 // 由於List繼承於Collection,所以可以使用增強for迴圈遍歷 System.out.println("===============使用增強for迴圈遍歷=================="); for (Object o : linkedList) { System.out.println(o.toString()); } // 由於List有下標,所以可以使用for迴圈遍歷 System.out.println("===============使用for迴圈遍歷=================="); for (int i = 0; i < linkedList.size(); i++) { System.out.println(linkedList.get(i)); } // 由於List繼承於Collection,所以可以使用迭代器遍歷 System.out.println("===============使用迭代器遍歷=================="); Iterator it = linkedList.iterator(); while (it.hasNext()) { System.out.println(it.next()); } // List有列表迭代器,可以實現雙向遍歷、新增、刪除、更新等操作 System.out.println("===============使用列表迭代器遍歷=================="); ListIterator lit = linkedList.listIterator(); while (lit.hasNext()) { System.out.println(lit.nextIndex() + ":" + lit.next()); } while (lit.hasPrevious()) { System.out.println(lit.previousIndex() + ":" + lit.previous()); } // 判斷 System.out.println(linkedList.isEmpty()); System.out.println(linkedList.contains(s3)); // 獲取 linkedList.get(0); } }
與ArrayList的區別及使用場景
1.ArrayList底層是陣列結構,查詢快,增刪慢,適用於多查詢的場景
2.LinkedList底層是雙向連結串列結構,查詢慢,增刪快,適用於增刪頻繁的場景