List Set 集合概述

2021-06-16 18:01:16 字數 4147 閱讀 2711

----------------------

asp.net+android+ios開發、

.net培訓、期待與您交流! ----------------------

1、集合基本概念

collection定義了集合框架的共性功能。

(1)新增

add(e);

addall(collection);

(2)刪除

remove(e);

removeall(collection);

clear();

(3)判斷。

contains(e);

isempty();

(4)獲取

iterator();

size();

(5)獲取交集。

retainall();

(6)集合變陣列。

toarray();

注意:add方法的引數型別是object。以便於接收任意型別物件。集合中儲存的都是物件的引用(位址)

public static void base_method()

2、迭代器

什麼是迭代器呢?

其實就是集合的取出元素的方式。迭代器是取出方式,會直接訪問集合中的元素。所以將迭代器通過內部類的形式來進行描述。通過容器的iterator()方法獲取該內部類的物件。

public static void method_get()

*///老外的寫法,迴圈結束後it就消失了

for(iterator it = al.iterator(); it.hasnext() ; )

}

3、list集合

collection

|--list:元素是有序的,元素可以重複。因為該集合體系有索引。

|--arraylist:底層的資料結構使用的是陣列結構。特點:查詢速度很快。但是增刪稍慢。執行緒不同步。

|--linkedlist:底層使用的鍊錶資料結構。特點:增刪速度很快,查詢稍慢。執行緒不同步

|--vector:底層是陣列資料結構。執行緒同步。被arraylist替代了。因為效率低。

|--set:元素是無序,元素不可以重複。

list:

特有方法。凡是可以操作角標的方法都是該體系特有的方法。

增add(index,element);

addall(index,collection);

刪remove(index);

改set(index,element);

查get(index):

sublist(from,to); //擷取乙個子集合

listiterator();list的迭代器

int indexof(obj):獲取指定元素的位置。

public static void method()

//新增元素

public void myadd(object obj)

//獲取元素

public object myget()

//判斷是否為空

public boolean isnull() }

class linkedlisttest

}}

7、arraylist練習

//目的是篩選,只存入單一的元素

class arraylisttest

public static arraylist singleelement(arraylist al)

return newal;

} }

8、arraylist練習2

要求:將自定義物件作為元素存到arraylist集合中,並去除重複元素。比如:存人物件。同姓名同年齡,視為同乙個人。為重複元素。

最關鍵的一點:list集合判斷元素是否相同,依據是元素的equals方法。因此要在person類中重寫該方法,要不然比較的就是位址值

要記住在list集合中remove、contains也好比較時都會呼叫equals

class person//定義乙個人的類

public boolean equals(object obj)//重寫方法,改變比較方式object obj = new person(引數);

public string getname()

public int getage() }

class arraylisttest2

public static void main(string args) }

public static arraylist singleelement(arraylist al)

return newal;

}}

9、hashset

|--set:元素是無序(存入和取出的順序不一定一致),元素不可以重複。、

|--hashset:底層資料結構是雜湊表。是執行緒不安全的。不同步。

hashset是如何保證元素唯一性的呢?

是通過元素的兩個方法,hashcode和equals來完成。 如果元素的hashcode值相同,才會判斷equals是否為true。 如果元素的hashcode值不同,不會呼叫equals。

注意,對於判斷元素是否存在,以及刪除等操作,依賴的方法是元素的hashcode和equals方法。

|--treeset

set集合的功能和collection是一致的。

10、treeset

可以對set集合中的元素進行排序。

要想按照存入的順序取該集合中的元素呢?

要知道,該集合的大小判斷取決於compareto返回的結果,我如果直接返回1,那麼後乙個就會比前乙個大,這不就行了麼所以:底層資料結構是二叉樹。保證元素唯一性的依據:compareto方法return 0.

treeset排序的第一種方式:讓元素自身具備比較性。元素需要實現comparable介面,覆蓋compareto方法。

也種方式也成為元素的自然順序,或者叫做預設順序。

//這就是乙個具備比較性的學生類,第一種排序方式下的

class student implements comparable//該介面強制讓學生具備比較性。

public int compareto(object obj)//覆蓋介面的方法

return -1;

} public string getname()

public int getage()

}

11、treeset的第二種排序方式

當元素自身不具備比較性時,或者具備的比較性不是所需要的。這時就需要讓集合自身具備比較性。在集合初始化時,就有了比較方式。定義了比較器,將比較器物件作為引數傳遞給treeset集合的建構函式

當兩種排序都存在時,以比較器為主。定義乙個類,實現comparator介面,覆蓋compare方法

class mycompare implements comparator

return num;//姓名不同就返回比較結果

}}

----------------------

asp.net+android+ios開發、

.net培訓、期待與您交流! ----------------------

List Set集合 Collections工具類

1 list集合 1 list是colleciton介面的乙個子介面,常用的實現類有arraylist linkedlist 2 list集合的特點 1 儲存單個元素,元素可重複,可以儲存多個null 2 儲存有序,存入順序和取出來的順序一致 例如 add 1 add 2 add 3 遍歷列印集合 ...

List Set集合以及子類的特點

是有序 可重複 可以有null的集合,就像我們的陣列一樣。我們可以吧list理解為乙個長度可變了陣列,而且提供了豐富的api。arraylist 底層是陣列的原理,元素可以重複,有順序,長度不固定,不是執行緒安全的,效率高。arratlist長度的變化 arratlist在新增資料的時候,初始長度為...

集合類List Set 成員之間的區別

list 可以有重複元素的列表 子類 arraylist 有序排列的集合 順序就是插入的順序 能用iterator迴圈輸出 常用方法 add ee 將指定的元素新增到此列表的尾部。get int index 返回此列表中指定位置上的元素。remove 如果存在刪除首次出現的那個 size 列表的大小...