1. 程式人生 > 其它 >HDUOJ---What Are You Talking About

HDUOJ---What Are You Talking About

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底層是雙向連結串列結構,查詢慢,增刪快,適用於增刪頻繁的場景