集合 常用實現類的區別


1.集合是什么

集合就是面向對象可重用性的體現,一般地,我們把研究對象統稱為元素;把一些元素組成的總體叫做集合,也簡稱集。

2.集合元素的特征

(1)確定性:設A是一個給定的集合,x是某一個具體對象,則或者是A的元素,或者不是A的元素,兩種情況必有一種且只有一種成立. (2)互異性:一個給定集合中的元素,指屬於這個集合的互不相同的個體(對象),因此,同一集合中不應重復出現同一元素. (3)無序性:一般不考慮元素之間的順序,但在表示數列之類的特殊集合時,通常按照習慣的由小到大的數軸順序書寫

collection 集合 實現類

ArrayList 實現方法:數組實現  版本:1.2  時間:98年12月發布 輕量級(運行快) 線程不安全 (常用)
Vector     實現方法:數組實現  版本:1.0  時間:95年5月發布   重量級(運行慢) 線程安全
LinkedList 實現方法: 鏈表實現 
數組:空間連續  查詢速度快  直接訪問下標                  增加刪除慢 增刪需要將后面的數據向后移或向前移
鏈表:節點關聯  查詢速度慢  通過上一個去查找下一個    增加刪除快 鏈表增加直接將上一個指向新數據下一個也指向新數據

Vector實現類Stack  棧LIFO(Last In First Out)查詢少增刪多

3.如何用java實現一個棧

a.數組  b.LinkedList  c.Stack類

用LinkedList,為什么不用Stack實現類呢 因為Stack繼承錯誤的繼承了Vector Vector提供了add方法,但是棧只能pop和push無法從中間插入,讓棧不夠安全。Stack繼承了Vector讓Statck存在很多不應該存在的方法。

 

 1 //用java創建一個棧
 2 public class AStack {
 3 public static void main(String[] args) {
 4     Stacks s = new Stacks();
 5     s.push("lin");
 6     s.push("hello");
 7     s.push("hou");
 8     s.push(123);
 9     System.out.println(s.pop());
10     System.out.println(s.pop());
11     System.out.println(s.pop());
12     System.out.println(s.pop());
13 }
14 }
15 class Stacks{
16     //變繼承復用為主核復用
17     private LinkedList list = new LinkedList();
18     public void push(Object o){
19         list.addFirst(o);
20     }
21     public  Object pop(){
22         Object o = list.removeFirst();
23         return o;
24     }
25 }

Map集合

元素:key - value 對(鍵值對)

特點:key 內容唯一不可重復 key所對應的value是可重復的 無序

用法:通過key找value

例子:字典 單詞——解釋 網站 用戶名——密碼

主要方法:

1.put(Object k,Object v):把k-v這個鍵值對放入Map 若k已存在那么新v會替代舊v

2.get(Object k):返回Map中k對應的v

3.remove(Objeck k):刪除k所在的鍵值對

4.containsKey(Object k):判斷Map中是否有K存在 

5.containsValue(Object v):判斷Map中是否有v存在 

Map3種的遍歷

1.值遍歷

1   Collection c = map.values();
2    Iterator i =  c.iterator();
3      while(i.hasNext()){
4        System.out.println(i.next());
5     }

2.鍵遍歷

 

1         Set s = map.keySet();
2         Iterator i =  s.iterator();
3         while(i.hasNext()){
4             Object k = i.next();
5             Object v = map.get(k);
6             System.out.println(k+"+++"+v);
7         }

3.鍵值遍歷

Map.Entry對象,封裝了一個key和一個value

1      Set set = map.entrySet();
2         Iterator i = set.iterator();
3         while(i.hasNext()){
4             Map.Entry me = (Map.Entry)i.next();
5             System.out.println(me.getKey());
6             System.out.println(me.getValue());
7         }

實現類:

1.HashMap  :1.2 允許用null作為key或者value

2.Hashtable :1.0 不允許null作為key或者value
3.Properties:Hashtable的子類 key和value都是String 一般用於配置文件的讀取

4.TreeMap:實現了SortcdMap(Map的子接口)自動對key排序

------------------------------------------------------------------------------------------------------------------------------------------------ 以上有寫的不對的歡迎大神指點錯誤,有想交流的請發郵件到我的郵箱1206835721@qq.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM