(筆記)集合類HashMap以及相互區別
阿新 • • 發佈:2019-02-02
ArrayList類:實現了可變陣列,允許儲存所有元素,包括null並可以根據索引位置對集合進行快速訪問和隨機訪問
缺點:向指引的索引位置插入物件或刪除物件比較慢
ArrayList和Vcetor的區別
一,同步性
Vector是同步的 這個類中的一些方法保證了Vector中的物件是執行緒安全的 而ArrayList中的物件並不是執行緒安全的
二,資料增長
從內部實現機制講ArrayList和Vector都是使用陣列(Array)來控制集合中的物件,當向這兩種型別中增加元素的時候
如果元素的數目超出的內部陣列的目前長度都需要進行擴充套件內部陣列的長度 Vector預設情況下自動增長為原來的一杯的陣列長度ArrayList
是原來的50%所以當需要在集合中加入大量資料則選用Vector具有優勢
HashMap和Hashtable的區別
一:Hashtable是基於陳舊的Dictionary的類 HashMap是基於JAVA 1.2引進的Mao介面的一個實現
二:同步性:Hashtable是同步的 這個類中的一些方法保證了Hashtable中的執行緒是安全的而HashMap
是非同步的,此中的物件並不是執行緒安全的,若不需要保證執行緒安全HashMap優先選用
三:值:HashMap中可以將空值作為一個表的條目和Key或value
但是Hashtable不能放入空值(null)
1:如果要求執行緒安全 用Vector Hashtable
2:如果不要求執行緒安全 應該使用ArrayList,LinkedList HashMap
3:如果要求 鍵值對 使用HashMap Hashtable
4:如果資料量很大 同時執行緒安全 Vector
System.exit(0)
System.exit(-1) exit(終止java當前執行的虛擬機器)
非零狀態表示異常終止
LinkedList中
.addFirst();方法 加入至第一個
.addLast();方法 加入至最後一個
Map結構的集合類
HashMap Hashtable
缺點:向指引的索引位置插入物件或刪除物件比較慢
ArrayList和Vcetor的區別
一,同步性
Vector是同步的 這個類中的一些方法保證了Vector中的物件是執行緒安全的 而ArrayList中的物件並不是執行緒安全的
二,資料增長
從內部實現機制講ArrayList和Vector都是使用陣列(Array)來控制集合中的物件,當向這兩種型別中增加元素的時候
如果元素的數目超出的內部陣列的目前長度都需要進行擴充套件內部陣列的長度 Vector預設情況下自動增長為原來的一杯的陣列長度ArrayList
是原來的50%所以當需要在集合中加入大量資料則選用Vector具有優勢
HashMap和Hashtable的區別
一:Hashtable是基於陳舊的Dictionary的類 HashMap是基於JAVA 1.2引進的Mao介面的一個實現
二:同步性:Hashtable是同步的 這個類中的一些方法保證了Hashtable中的執行緒是安全的而HashMap
是非同步的,此中的物件並不是執行緒安全的,若不需要保證執行緒安全HashMap優先選用
三:值:HashMap中可以將空值作為一個表的條目和Key或value
但是Hashtable不能放入空值(null)
1:如果要求執行緒安全 用Vector Hashtable
2:如果不要求執行緒安全 應該使用ArrayList,LinkedList HashMap
3:如果要求 鍵值對 使用HashMap Hashtable
4:如果資料量很大 同時執行緒安全 Vector
System.exit(0)
System.exit(-1) exit(終止java當前執行的虛擬機器)
非零狀態表示異常終止
LinkedList中
.addFirst();方法 加入至第一個
.addLast();方法 加入至最後一個
Map結構的集合類
HashMap Hashtable
package lei; import java.util.*; public class Demo { public static void main(String[] args) { // TODO Auto-generated method stub HashMap hm=new HashMap(); Emp emp0 = new Emp("01", "aaa", 111); Emp emp1 = new Emp("02", "bbb", 222); Emp emp2 = new Emp("03", "ccc", 333); hm.put("01", emp0); hm.put("02",emp1); hm.put("02",emp2); //後者會自動覆蓋前者 if(hm.containsKey("02")) { //查詢編號為"02" System.out.println("找到該員工"); Emp emp = (Emp)hm.get("02"); //鍵值對 key--value System.out.println("名字為"+emp.getName()); }else{ System.out.println("未找到該員工"); } //遍歷HashMap中所有的key和value Iterator it =hm.keySet().iterator();//建立迭代器 while(it.hasNext()){ //判斷是否有下一個 String key=it.next().toString(); //取出Key 轉化為String格式 Emp emp=(Emp)hm.get(key); //通過key 取出emp System.out.println("名字是"+emp.getName()); System.out.println("薪水是"+emp.getSal()); //取出順序不穩定的 } } }<pre name="code" class="java">class Emp{ public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmpno() { return Empno; } public void setEmpne(String empne) { Empno = empne; } public float getSal() { return sal; } public void setSal(float sal) { this.sal = sal; } private String name; private String Empno; private float sal; public Emp(String name , String Empno,float sal){ this.name=name; this.sal=sal; this.Empno=Empno; } }