接口:是代表集合的抽象數(shù)據(jù)類型。接口允許集合獨立操縱其代表的細節(jié)。在面向?qū)ο蟮恼Z言,接口通常形成一個層次;
實現(xiàn)(類):是集合接口的具體實現(xiàn)。從本質(zhì)上講,他們是可以重復使用的數(shù)據(jù)結(jié)構(gòu);
算法:是實現(xiàn)集合接口的對象里的方法執(zhí)行的一些有用的計算,例如:搜索和排序。這些算法被稱為多態(tài),那是因為相同的方法可以在相似的接口上有著不同的實現(xiàn)。
集合框架體系圖:
Paste_Image.png
集合接口:
Paste_Image.png
Set和List的區(qū)別:
1、Set接口實例存儲的是無序的、不可重復的數(shù)據(jù);List接口實例存儲的是有序的、可以重復的元素。
2、 Set檢索效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變 <實現(xiàn)類有HashSet,TreeSet>。
3、List和數(shù)組類似,可以動態(tài)增長,根據(jù)實際存儲的數(shù)據(jù)的長度自動增長List的長度。查找元素效率高,插入刪除效率低,因為會引起其他元素位置改變 <實現(xiàn)類有ArrayList,LinkedList,Vector> 。
幾個重要的常用集合實現(xiàn)類
Paste_Image.png
Paste_Image.png
Paste_Image.png
遍歷ArrayList
public class Test{
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("Hello");
list.add("World");
list.add("HAHAHAHA");
//第一種遍歷方法使用foreach遍歷List
for (String str : list) { //也可以改寫for(int i=0;i<list.size();i++)這種形式
System.out.println(str);
}
//第二種遍歷,把鏈表變?yōu)閿?shù)組相關(guān)的內(nèi)容進行遍歷
String[] strArray=new String[list.size()];
list.toArray(strArray);
for(int i=0;i<strArray.length;i++) //這里也可以改寫為 foreach(String str:strArray)這種形式
{
System.out.println(strArray[i]);
}
//第三種遍歷 使用迭代器進行相關(guān)遍歷
Iterator<String> ite=list.iterator();
while(ite.hasNext())//判斷下一個元素之后有值
{
System.out.println(ite.next());
}
}
}
遍歷Map
public class Test{
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
//第一種:普遍使用,二次取值
System.out.println("通過Map.keySet遍歷key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//第二種
System.out.println("通過Map.entrySet使用iterator遍歷key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第三種:推薦,尤其是容量大時
System.out.println("通過Map.entrySet遍歷key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第四種
System.out.println("通過Map.values()遍歷所有的value,但不能遍歷key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}
}