上圖是集合框架中常用的類和介面:
一、用得最多的主要有set,list,map,iterator這幾個介面, set和list介面都是collection介面的子介面,有很多相同的地方,我們只要撐握了collection介面的方法及set和list的用法也就差不多了.
set和list 的區別:1、set集合是無順序的,不能放重複的資料
2、list集合是有序的,可以存放重複的資料
set的實現類常用的主要有兩個:hashset、treeset
我們可以把一類物件新增到集合中,並且按物件的某乙個屬性進行排序(客戶化排序和自然排序)
1、對treeset集進行客戶化排序要求寫乙個類實現comparator介面,並且重寫其中的compare方法 例:
客戶化排序容易擴充套件,如果要按其它的屬性排序,只需要重新寫乙個類實現comparator介面就可以了,
不需要修改原來的**。
class users
public void setname(string name)
public string getname()
public void setid(int id)
public int getid()
//這裡重寫了父類的tostring方法
public string tostring() }
//這個類實現comparator介面,並且重寫了其中的compare方法
public class mycomparator implements comparator }
class testcomparator
public static void test() }
} 2、自然排序,將需要排序的那個類實現comparable介面並且重寫其中的compareto方法
例如下: class users implements comparable
public void setname(string name)
public string getname()
public void setid(int id)
public int getid()
//這裡重寫了父類的tostring方法
public string tostring()
//重寫compareto方法
public int compareto(object o) }
3.如果是hashset自然排序,則要求排序的類重寫hashcode方法和equals方法
二、對list和set集進行遍歷:
對list集合進行遍歷有如下幾種方法:
1、通過下標遍歷,2使用迭代器進行遍歷,3、增強迴圈進行遍歷
list list=new arraylist();
list.add("aa");
list.add("bb");
list.add("cc");
for(int i=0;i
iterator it=list.iterator();
while(it.hasnext())
for(object obj :list)
三、vector和arraylist的區別:
1、vector 和arraylist都實現了list介面,vector是執行緒安全的,可以多個執行緒同時訪問,但效能比較差
2、arraylist執行緒不安全,不支援多個執行緒同時訪問,但效能比較好,訪問的速度快
四、map集是以鍵值對的形式存放的,鍵不可以重複,值可以重複,如果鍵重複,會將原來的值覆蓋,
map集的實現類主要有三個:hashmap,treemap,hashtable
hashmap與hashtable 的區別: 1、hashtable是執行緒安全的,支援同步。2、hashmap執行緒不安全,不支援
同步,但效能比hashtable好
map集的遍歷:
1、 map map=new hashmap()
map.put("1","張飛");
map.put("2","關羽");
map.put("3","劉備");
//得到鍵的集合
set set=map.keyset();
for(object obj :set)
2、 //得到健值對的集合
set s=map.entryset();
for(object obj :set)
五、對list集進行客戶化排序,可以通過collections類的sort方法,要求傳乙個list集和乙個comparator物件 例:
list list=new arraylist()
users user1=new users("張三",17); users user2=new users("李四",13);
users user3=new users("王五",19);
users user5=new users("王五",19);
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user5);
collections.sort(list,new mycomparator());
iterator it=list.iterator();
while(it.hasnext())
c 中常用集合類和集合介面之集合類系列
常用集合類 陣列 array 的不足 即 集合與陣列的區別 1.陣列是固定大小的,不能伸縮。雖然system.array.resize這個泛型方法可以重置陣列大小,但是該方法是重新建立新設定大小的陣列,用的是舊陣列的元素初始化。隨後以前的陣列就廢棄!而集合卻是可變長的。2.陣列要宣告元素的型別,集合...
c 中常用集合類和集合介面之集合類系列
常用集合類 陣列 array 的不足 即 集合與陣列的區別 1.陣列是固定大小的,不能伸縮。雖然system.array.resize這個泛型方法可以重置陣列大小,但是該方法是重新建立新設定大小的陣列,用的是舊陣列的元素初始化。隨後以前的陣列就廢棄!而集合卻是可變長的。2.陣列要宣告元素的型別,集合...
JAVA 中常用的幾個集合類
1.arraylist 基於陣列方式實現,無容量的限制。在執行插入元素時可能要擴容,在刪除元素時並不會減少陣列的容量。如果希望相應的縮小陣列容量,可以呼叫trimtosize 在查詢元素時要遍歷陣列,對於非null的元素採取equals的方式尋找。非執行緒安全。2.linkedlist 基於雙向鍊錶...