一、請簡述list介面的特點。
v 它是乙個元素訪問有序的集合。例如,存元素的順序是11、22、
33。那麼集合中,元素的儲存就是按照11、
22、33的順序完成的)。
v 它是乙個帶有索引的集合,通過索引就可以精確的操作集合中的元素(與陣列的索引是乙個道理)。
v 集合中可以有重複的元素,通過元素的equals方法,來比較是否為重複的元素。
二、請簡述hashset去除重複元素的原理。
v 呼叫被新增元素的hashcode(),和hashset中已有元素的
hashcode
比較是否相同
v 如果不相同,直接儲存
v 如果相同,呼叫equals方法比較是否相同
v 不相同,直接儲存元素
v 相同,認為是同一元素.不儲存
三、簡述常見的資料結構中元素的訪問特點。
v 棧:stack,又稱堆疊,對元素的訪問特點是:先進後出。即,存進去的元素,要在後它後面的元素依次取出後,才能取出該元素。
v 佇列:queue,簡稱隊,對元素的訪問特點是:先進先出。即,存進去的元素,要在後它前面的元素依次取出後,才能取出該元素。
v 陣列:array,是有序的元素序列,對元素的訪問特點是:
1、查詢元素快:通過索引,可以快速訪問指定位置的元素
2、增刪元素慢
(1)指定索引位置增加元素:需要建立乙個新陣列,將指定新元素儲存在指定索
引位置,再把原陣列元素根據索引,複製到新陣列對應索引的位置。
(2)指定索引位置刪除元素:需要建立乙個新陣列,把原陣列元素根據索引,復
製到新陣列對應索引的位置,原陣列中指定索引位置元素不複製到新陣列中。
v 鍊錶:linked list,對元素的訪問有如下的特點:
1、多個結點之間,通過位址進行連線。例如,多個人手拉手,每個人使用自己的
右手拉住下個人的左手,依次類推,這樣多個人就連在一起了。
2、查詢元素慢:想查詢某個元素,需要通過連線的節點,依次向後查詢指定元素。
3、增刪元素快:
四、簡述comparable和
comparator
兩個介面的區別。
v comparable:強行對實現它的每個類的物件進行整體排序。這種排序被稱為類的自然排序,類的
compareto
方法被稱為它的自然比較方法。
只能在類中實現compareto()一次,不能經常修改類的**實現自己想要的排序
。實現此介面的物件列表(和陣列)可以通過collections.sort(和
arrays.sort
)進行自動排序,物件可以用作有序對映中的鍵或有序集合中的元素,無需指定比較器。
v comparator強行對某個物件進行整體排序。可以將
comparator
傳遞給sort
方法(如
collections.sort
或 arrays.sort
),從而允許在排序順序上實現精確控制。還可以使用
comparator
來控制某些資料結構(如有序
set或有序對映)的順序,或者為那些沒有自然順序的物件
collection
提供排序。
五、根據要求練習linkedlist方法:
(1)基本方法:add, set, get, remove, clear, size等方法;
(2)特有方法:addfirst, addlast, getfirst, getlast, removefirst, removelast, push, pop, clear等方法。
(1)基本方法:
public class linkedlisttest01system.out.println("--------------");
// 5.使用get方法獲取指定索引的元素
system.out.println(arr.get(1));
// 6.使用size方法獲取集合大小
system.out.println(arr.size());
// 7.使用remove方法刪除指定索引的元素
arr.remove(3);
// 8.使用clear清空集合中的元素
arr.clear();
system.out.println(arr);
}}
(2)特有方法
public class linkedlisttest02}
六、定義人類,包含姓名和年齡屬性。建立4個人儲存到
hashset
中,姓名和年齡相同的人看做同一人不儲存。
person類:// 1.定義person類.包好姓名年齡屬性,重寫hashcode()和equals()方法
public class person
public person(string name, int age)
@override
public boolean equals(object o)
@override
public int hashcode()
@override
public string tostring() ';
}}
測試類
public class hashsettest01}}
七、向list集合新增姓名
,將二丫替換為王小丫。
public class listtest01// 4.使用增強for獲取linkedhashset中的元素
system.out.println("---------------------");
for (string string : lhset)
}}
九、arraylist集合中有如下內容: ,使用collections.sort()對
arraylist
集合中的資料進行排序,並列印出排序後的結果。
public class collectionstest01 四個元素arr.add(33);
arr.add(11);
arr.add(77);
arr.add(55);
// 3.呼叫collections的sort方法,對集合排序
collections.sort(arr);
// 4.使用增強for遍歷arraylist集合
for (integer integer : arr)
}}
資料結構 單列集合 List集合 Set集合
1 陣列特點 查詢快 位址是連續的,通過首位址可以找到陣列,通過索引 可以快速查詢某個元素 增刪慢 陣列的長度是固定的,要增刪某個元素,必須重新建立乙個陣列,把資料複製過來 2 arraylist特點 底層也是使用陣列實現,兼具陣列的特點 3 linkedlist特點 底層是鍊錶結構 增刪快 因為如...
集合中List和Set
collection介面有兩個子介面 list 列表 set 集 list 可存放重複元素,元素訪問是有序的。set 不可以存放重複元素,元素訪問是無序 的list集合中常用的類 vector 執行緒安全,但速度慢,已被 arraylist 替代。arraylist 執行緒不安全,查詢速度快。lin...
集合框架 List與Set
所有的集合框架並不存放真正的物件,而是持有物件的引用 list與set都繼承自collection list的實現類 arraylist,linklist,vector set的實現類 hashset,linkedhashset,sortset 介面 treeset 實現sortset 首先介紹一下...