Java LinkedList

java linkedlist

java 集合框架java 集合框架

鏈表(linked list)是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表,但并不是按照線性的順序存儲數(shù)據(jù),而是在每一個節(jié)點里存到下一個節(jié)點的地址。

鏈表可分為單向鏈表和雙向鏈表。

一個單向鏈表包含兩個值: 當前節(jié)點的值和一個指向下一個節(jié)點的鏈接。

一個雙向鏈表有三個整數(shù)值: 數(shù)值、向后的節(jié)點鏈接、向前的節(jié)點鏈接。

java linkedlist(鏈表) 類似于 arraylist,是一種常用的數(shù)據(jù)容器。

與 arraylist 相比,linkedlist 的增加和刪除對操作效率更高,而查找和修改的操作效率較低。

以下情況使用 arraylist :

  • 頻繁訪問列表中的某一個元素。
  • 只需要在列表末尾進行添加和刪除元素操作。

以下情況使用 linkedlist :

  • 你需要通過循環(huán)迭代來訪問列表中的某些元素。
  • 需要頻繁的在列表開頭、中間、末尾等位置進行添加和刪除元素操作。

linkedlist 繼承了 abstractsequentiallist 類。

linkedlist 實現(xiàn)了 queue 接口,可作為隊列使用。

linkedlist 實現(xiàn)了 list 接口,可進行列表的相關(guān)操作。

linkedlist 實現(xiàn)了 deque 接口,可作為隊列使用。

linkedlist 實現(xiàn)了 cloneable 接口,可實現(xiàn)克隆。

linkedlist 實現(xiàn)了 java.io.serializable 接口,即可支持序列化,能通過序列化去傳輸。

 

1. 創(chuàng)建鏈表

linkedlist 類位于 java.util 包中,使用前需要引入它,語法格式如下:

// 引入 linkedlist 類
import java.util.linkedlist; 

linkedlist<e> list = new linkedlist<e>();   // 普通創(chuàng)建方法
或者
linkedlist<e> list = new linkedlist(collection<? extends e> c); // 使用集合創(chuàng)建鏈表

創(chuàng)建 linkedlist 的范例:

// 引入 linkedlist 類
import java.util.linkedlist;

public class yapftest {
    public static void main(string[] args) {
        linkedlist sites = new linkedlist();
        sites.add("google");
        sites.add("yapf");
        sites.add("taobao");
        sites.add("weibo");
        system.out.println(sites);
    }
}

以上范例,執(zhí)行輸出結(jié)果為:

[google, yapf, taobao, weibo]

更多的情況下我們使用 arraylist 訪問列表中的隨機元素更加高效,但以下幾種情況 linkedlist 提供了更高效的方法。

 

2. 在列表開頭添加元素

// 引入 linkedlist 類
import java.util.linkedlist;

public class yapftest {
    public static void main(string[] args) {
        linkedlist sites = new linkedlist();
        sites.add("google");
        sites.add("yapf");
        sites.add("taobao");
        // 使用 addfirst() 在頭部添加元素
        sites.addfirst("wiki");
        system.out.println(sites);
    }
}

以上范例,執(zhí)行輸出結(jié)果為:

[wiki, google, yapf, taobao]

 

2. 在列表結(jié)尾添加元素

// 引入 linkedlist 類
import java.util.linkedlist;

public class yapftest {
    public static void main(string[] args) {
        linkedlist sites = new linkedlist();
        sites.add("google");
        sites.add("yapf");
        sites.add("taobao");
        // 使用 addlast() 在尾部添加元素
        sites.addlast("wiki");
        system.out.println(sites);
    }
}

以上范例,執(zhí)行輸出結(jié)果為:

[google, yapf, taobao, wiki]

 

3. 在列表開頭移除元素

// 引入 linkedlist 類
import java.util.linkedlist;

public class yapftest {
    public static void main(string[] args) {
        linkedlist sites = new linkedlist();
        sites.add("google");
        sites.add("yapf");
        sites.add("taobao");
        sites.add("weibo");
        // 使用 removefirst() 移除頭部元素
        sites.removefirst();
        system.out.println(sites);
    }
}

以上范例,執(zhí)行輸出結(jié)果為:

[yapf, taobao, weibo]

 

4. 在列表結(jié)尾移除元素

// 引入 linkedlist 類
import java.util.linkedlist;

public class yapftest {
    public static void main(string[] args) {
        linkedlist sites = new linkedlist();
        sites.add("google");
        sites.add("yapf");
        sites.add("taobao");
        sites.add("weibo");
        // 使用 removelast() 移除尾部元素
        sites.removelast()                
相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频