今天我們先講一下Collection:
- java.util.Collection是一種java集合接口,它提供了對集合對象的基本操作通用接口方法,同時它還有很多具體實現(xiàn):
? ? ?
? ? ?
? ? ?注:以上圖片只列舉常用集合類
- java.util.Collections是一個包裝類,它包含許多有關(guān)集合操作的靜態(tài)多態(tài)方法,此類不能實例化,它就像個工具類,服務(wù)與java的Collection。有關(guān)Collections的具體方法可參考JDK說明文檔(),下面我舉出幾個方法示例:
? ? ??
import java.util.Collection;
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;
public class test {
private double[] a = {123,33,423,655,4553};
List<Double> l = new ArrayList();
List<Double> l2 = new ArrayList();
public static void main(String[] args) {
new test().sort();
}
public void sort(){
for(int i = 0; i<a.length;i++ ){
l.add(a[i]);
}
Collections.sort(l);
for(int i = 0 ;i<a.length;i++){
System.out.println(l.get(i));
}
}
}
運行結(jié)果如下:
可在上面代碼的基礎(chǔ)上添加同類方法,如:
把上面sort()中的Collections.sort(l);--->Collections.shuffle(l); ? ?//隨機排序
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--->Collections.reverse(l); ? ?//反轉(zhuǎn)排序
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--->Collections.min(l); ? ? ?//返回最小元素(max,最大)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--->Collections.fill(l,"334"); ? //用334替換所有元素
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?......
?
? ?2.常見java容器的比較:
接口 | 特性 | 實現(xiàn)類 | 實現(xiàn)類特性 | 成員要求 |
List | 線性、有序的存儲容器,可通過索引訪問元素 | ArrayList | 數(shù)組實現(xiàn)。非同步。 | ? |
Vector | 類似ArrayList,同步。 | ? | ||
LinkedList | 雙向鏈表。非同步。 | ? | ||
Map | 保存鍵值對成員 | HashMap | 基于哈希表的?Map?接口的實現(xiàn),滿足通用需求 | 任意Object對象,如果修改了equals方法,需同時修改hashCode方法 |
TreeMap | 默認根據(jù)自然順序進行排序, 或者根據(jù)創(chuàng)建映射時提供的?進行排序 | 鍵成員要求實現(xiàn)Comparable接口,或者使用Comparator構(gòu)造TreeMap。鍵成員一般為同一類型。 | ||
LinkedHashMap | 類似于HashMap,但迭代遍歷時取得“鍵值對”的順序是其插入順序或者最近最少使用的次序 | 與HashMap相同 | ||
IdentityHashMap | 使用==取代equals()對“鍵值”進行比較的散列映射 | 成員通過==判斷是否相等 | ||
WeakHashMap | 弱鍵映射,允許釋放映射所指向的對象 | ? | ||
ConcurrentHashMap | 線性安全的Map | ? | ||
Set | 成員不能重復 | HashSet | 為快速查找設(shè)計的Set | 元素必須定義hashCode() |
TreeSet | 保持次序的Set,底層為樹結(jié)構(gòu) | 元素必須實現(xiàn)Comparable接口 | ||
LinkedHashSet | 內(nèi)部使用鏈表維護元素的順序(插入的次序) | 元素必須定義hashCode() |
? ? 注:在滿足要求的情況下,Map應(yīng)盡量使用HashMap,Set應(yīng)盡量使用HashSet
? ?3.Collection的學習:
? ?實例1:
import java.util.*;
public class SimpleCollection{
public static void main(String[] args){
Collection<Integer> c = new ArrayList<Integer>();
for(int i = 0;i < 10; i++)
c.add(i); //Autoboxing
for(Integer i: c)
System.out.println(i +", ");
}
}
/*
0,1,2,3,4,5,6,7,8,9,
*/
實例2:
/*
如何向Collection添加一組元素
*/
//以下是方法體
Collection<Integer> collection = new ArrayList<Integer>
(Arrays.asList(1,2,3,4,5)); //Array像Collections一樣是工具類
Integer[] moreInt = {6,7,8,9,10};
Collection.addAll(Arrays.asList(moreInt));
Collections.addAll( collection,11,12,13,14); //Collection對象作參數(shù)
Collections.addAll( collection, moreInt);
List<Integer> list = Arrays.asList(16,17,18);
list.set(1,99);
//list.add(21) //錯誤,asList產(chǎn)生的List的長度不可變,只能修改元素值
? 下一節(jié)學習?。?/span>
### ? ?學習從來都是一個過程,對對錯錯對對...若文中有錯誤,還望讀者批評指出 ? ? ?###