----------------------
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 列表的大小...