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類還為在列表的開頭及結尾get
、remove
和insert
元素提供了統一的命名方法。這些操作允許將鏈結列表用作堆疊、佇列或雙端佇列。
就是可以使用linkedlist集合可以實現堆疊,佇列。
堆疊:先進後出 first in last out filo 舉例:手槍彈夾。linkedlist是list的子類,list中的方法linkedlist都是可以使用,這裡就不做詳細介紹,那麼我們只需要了解linkedlist的特有方法即可。佇列:先進先出 first in first out fifo 舉例:排隊買票。
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...