List集合 Set集合

2022-09-06 16:09:08 字數 3290 閱讀 4539

一、請簡述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 linkedlisttest01 

system.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 首先介紹一下...