集合 List介面及實現類

2021-10-23 10:35:26 字數 3682 閱讀 2354

list部分思維導圖

list介面是乙個有序的 collection,list介面能夠精確的控制每個元素插入的位置,能夠通過索引(元素在list中位置,類似於陣列的下標)來訪問list中的元素,第乙個元素的索引為 0,而且允許有相同的元素。

特點:list 介面儲存一組不唯一有序(插入順序)的物件。

方法名返回值

方法注釋

add(int index, object o)

void

在index位置上插入物件o

addall(int index, collection c)

boolean

將乙個集合中的元素新增到集合中的index位置

get(int index)

object

返回集合中指定位置的元素

set(index,element)

修改index位置上的元素

sublist(int fromindex, int toindex)

list

返回fromindex和toindex之間的集合元素

底層資料結構是陣列,查詢快,增刪慢;

執行緒不同步 => 效率高 => 但執行緒不安全

底層資料結構是鍊錶結構,查詢慢,增刪快;

執行緒不同步 => 效率高 => 執行緒不安全

底層資料結構也是陣列,查詢快,增刪慢,已被arraylist取代;

執行緒同步 => 效率低 => 但執行緒安全

在迭代過程中,使用了集合的方法對元素進行操作。導致迭代器並不知道集合中的變化,容易引發資料的不確定性

解決:

​ 在迭代時,不要使用集合的方法操作元素。使用迭代器的方法操作。但是迭代器iterator的方式只有hasnext(),next(),remove();iterator有乙個子介面listiterator可以完成該問題的解決。通過list介面中的listiterator()就可以獲取。

public

class

linkedlistiteratordemo

}//列印容器中的元素

system.out.

println

(list);}

}

注意:該列表迭代器只有list介面有。而且這個迭代器可以完成在迭代過程中的增刪改查動作。linkedlist類還為在列表的開頭及結尾getremoveinsert元素提供了統一的命名方法。這些操作允許將鏈結列表用作堆疊、佇列或雙端佇列。

就是可以使用linkedlist集合可以實現堆疊,佇列。

堆疊:先進後出 first in last out filo 舉例:手槍彈夾。

佇列:先進先出 first in first out fifo 舉例:排隊買票。

linkedlistlist的子類,list中的方法linkedlist都是可以使用,這裡就不做詳細介紹,那麼我們只需要了解linkedlist的特有方法即可。

linkedlist中的方法圍繞頭和尾展開定義的。

方法含義注釋

addfirst()

給頭部新增元素

addlast()

給末尾新增元素

getfirst()

獲取頭部元素

getlast()

獲取末尾元素

removefirst()

獲取頭部元素,並刪除頭部元素

removelast()

獲取末尾元素,並刪除末尾元素

面試題:用linkedlist模擬乙個堆疊資料結構。

public

class

linkedlisttest1

system.out.

println

(q.isnull()

);}}

/** * 定義乙個堆疊資料結構 queue

*/class

queue1

//堆疊內部的新增元素功能

public

void

myadd

(string obj)

// 堆疊的獲取方法

public object myget()

// 判斷堆疊中元素是否為空,沒有元素就為true

public

boolean

isnull()

}

面試題:用linkedlist模擬乙個佇列資料結構。

public

class

linkedlisttest2

system.out.

println

(q.isnull()

);}}

/** * 定義乙個佇列資料結構 queue

*/class

queue2

/** * 佇列的新增元素功能。

*/public

void

myadd

(string obj)

/** * 佇列的獲取方法

*/public object myget()

// 判斷佇列中元素是否為空,沒有元素就為true

public

boolean

isnull()

}

案例:去除list集合中的重複元素。

思路

先建立乙個臨時容器。用於儲存唯一性的元素。

遍歷原容器,將遍歷到的元素到臨時容器中去判斷,是否存在。

如果存在不儲存到臨時容器,如果不存在儲存到臨時容器中。

遍歷結束後,臨時容器中儲存的就是唯一性的元素。

如果需要將這些唯一性的元素保留到原容器中,只要將原容器清空,將臨時容器中的元素新增到原容器中即可。

/**

* 集合去重

*/public

class

arraylisttest01

// 去重集合

public

static

void

getsingleelement

(list list)

}// 3.清除原集合

list.

clear()

;// 4.新增新集合

list.

addall

(listplus);}

}

Collection介面之List集合類的使用

collection介面其中包含一些主要的常見方法,如 size isempty clear contains add remove 同時,collection 集合類中還存在 list 與set 以及map 集合類,統稱為 collection 三大集合類。這三種物件與本身的 collection...

List介面及相關類

概述 有序的 collection 也稱為序列 此介面的使用者可以對列表中每個元素的插入位置進行精確地控制。使用者可以根據元素的整數索引 在列表中的位置 訪問元素,並搜尋列表中的元素。遍歷方式 list介面是有序的,可以通過普通for遍歷,還可以通過listiterator遍歷。e get int ...

集合 List介面

有序的 collection 也稱為序列 此介面的使用者可以對列表中每個元素的插入位置進行精確地控制。使用者可以根據元素的整數索引 在列表中的位置 訪問元素,並搜尋列表中的元素 與 set 不同,列表通常允許重複的元素 void add int index,e element e remove in...