類集就是一個動態的對象數組,可以存儲數量不等的多個對象
對象數組:可以保存多個對象在一個數組中
問題:數組的長度是不可改變的,而類集的大小不確定可以任意的擴充或減少
三個核心接口
1、 Collection---List(ArrayList,LinkedList)
---Set
List
操作:add()
List all=new ArrayList();
all.add("MLDN");
all.add("LXH");
默認情況下加入數據的順序就是輸出的順序
可以使用特定的方法向指定的位置增加
使用類集時,加入的對象最好一種對象
從對象數組中刪除數據用remove()
一個個打印元素的方法:
1、用for循環(size()獲取類集的大小、get(int indenx)返回指定位置的元素)
2、Iterator (開發中集合都是用該接口輸出)
因為集合的長度不固定,所以Iterator采用的方法是一個個判斷輸出,
如果有下一個元素就執行,如果沒有下一個元素就不執行
判斷是否有下一個元素:public boolean hasNext();
取內容:public Object next()
Iterator iter=集合對象.iterator();
while(iter.hasNext()){
object obj = iter.next();
System.out.println(obj);
}
如何讓一個集合只加入一種對象
List<java.lang.String>all = new ArrayList<java.lang.String>();
便于轉型
(Collection)集合操作的方法總結:
向集合中加入數據;
從集合中刪除數據;
為Iterator實例化;
取出元素的個數。
Set
區別: HashSet 子類加入的對象是無序的;(散列存放)
List 中可以存放重復元素, Set 中不允許存在重復元素
如果希望Set中的數據按順序(數據的大小不是放入數據的順序)存放則應該使用TreeSet子類
靠的是Comparable()接口
2、 Map
Map的主要功能是作為查找使用而不是作為輸出使用
存取數據的方法:put(Object key,Object value)
取內容:Object get(Object key)
Map<java.lang.String,java.lang.String> m = new HashMap<java.lang.String,java.lang.String>() ;
m.put("張三","123456") ;
m.put("李四","654321") ;
System.out.println(m.get("趙六")) ;//null
Map 接口的對象不能直接使用Iterator輸出
//下面的這個方法了解即可
如果非要使用Iterator輸出Map接口對象的內容,則必須使用以下步驟
Map ——>Set ——> Iterator ——> Map.Entry ——> key、values
Set all = m.entrySet() ;
Iterator iter = all.iterator() ;
while(iter.hasNext()){
Map.Entry me = (Map.Entry)iter.next() ;
System.out.println(me.getKey()+" --> "+me.getValue()) ;
}
3、 Iterator
4、 Enumeration :枚舉,與Iterator的功能一致,都是用于輸出集合中的內容
List 和 Set 都不能使用 Enumeration 輸出
而 List 的另一個子類: Vector 可以使用Enumeration輸出
Vector 是一個同步操作 性能不是很好 因此后來讓 Vector 也實現了 Iterator 接口
使用實例:
Vector v = new Vector() ;
v.add("A") ;
v.add("A") ;
v.add("A") ;
Enumeration e = v.elements() ;
while(e.hasMoreElements()){
System.out.println(e.nextElement()) ;
}
5、 Stack (Vector 的子類)(先進后出)
Stack s = new Stack() ;
s.push("A") ;
s.push("B") ;
s.push("C") ;
s.push("D") ;
s.push("E") ;
// 取值
while(!s.empty()){
System.out.println(s.pop()) ;
}
瀏覽器的前進和后退就是用棧實現的
6、 Hashtable 與 HashMap 相似,但 Hashtable 是同步的
7、 Properties 類是 Hashtable 的子類
不同之處: Properties 類主要是保存字符串的,而 Hashtable 是保存對象的。
setProperties(String key,String value)
getProperties(String key)
8、 ArrayList 與 Vector
異步 | 同步
只支持 Iterator 輸出| 支持 Iterator 和 Enumeration 輸出
出現較晚 | 出現較早
9、 HashMap 與 Hashtable
異步 | 同步
不直接支持Iterator輸出| 不直接支持Iterator輸出
出現較晚 | 出現較早
10、本章重點
HashMap 與 Hashtable
ArrayList 與 Vector
Iterator 與 Enumeration
保存單個值的集合:Collection:
|---List:允許有重復元素
|---ArrayList:異步處理,新的類,只能用 Iterator 輸出
|---Vector:同步處理,舊的類,能 Iterator 和 Enumeration 輸出
|---Set:不允許有重復元素
|---HashSet:散列,無序
|---TreeSet:有序,按 Comparable 排序
保存一對值的集合(Map):
|---HashMap:異步處理新的類
|---Hashtable:同步處理舊的類
|---TreeMap:按KEY進行排列的集合
輸出:
|---Iterator:新的輸出類,方法名稱較短
|---Enumeration:舊的輸出類,方法名稱較長
posted @
2011-08-06 16:47 sisyphus 閱讀(222) |
評論 (1) |
編輯 收藏