程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java中Date,Calendar,Timestamp的差別和互相轉換與應用

Java中Date,Calendar,Timestamp的差別和互相轉換與應用

編輯:關於JAVA

Java中Date,Calendar,Timestamp的差別和互相轉換與應用。本站提示廣大學習愛好者:(Java中Date,Calendar,Timestamp的差別和互相轉換與應用)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中Date,Calendar,Timestamp的差別和互相轉換與應用正文


Hashtable類  
Hashtable繼續Map接口,完成一個key-value映照的哈希表。任何非空(non-null)的對象都可作為key或許value。  

添加數據應用put(key,value),掏出數據應用get(key),這兩個根本操作的時光開支為常數。  

Hashtable經由過程initial   capacity和load   factor兩個參數調劑機能。平日缺省的load   factor   0.75較好地完成了時光和空間的平衡。增年夜load   factor可以節儉空間但響應的查找時光將增年夜,這會影響像get和put如許的操作。  

應用Hashtable的簡略示例以下,將1,2,3放到Hashtable中,他們的key分離是”one”,”two”,”three”:  
Hashtable   numbers   =   new   Hashtable();  
numbers.put(“one”,   new   Integer(1));  
numbers.put(“two”,   new   Integer(2));  
numbers.put(“three”,   new   Integer(3));  

要掏出一個數,好比2,用響應的key:  
Integer   n   =   (Integer)numbers.get(“two”);  
System.out.println(“two   =   ”   +   n);  

因為作為key的對象將經由過程盤算其散列函數來肯定與之對應的value的地位,是以任何作為key的對象都必需完成hashCode和equals辦法。hashCode和equals辦法繼續自根類Object,假如你用自界說的類看成key的話,要相當當心,依照散列函數的界說,假如兩個對象雷同,即obj1.equals(obj2)=true,則它們的hashCode必需雷同,但假如兩個對象分歧,則它們的hashCode紛歧定分歧,假如兩個分歧對象的hashCode雷同,這類景象稱為抵觸,抵觸會招致操作哈希表的時光開支增年夜,所以盡可能界說好的hashCode()辦法,能加速哈希表的操作。  

假如雷同的對象有分歧的hashCode,對哈希表的操作會湧現意想不到的成果(等待的get辦法前往null),要防止這類成績,只須要切記一條:要同時復寫equals辦法和hashCode辦法,而不要只寫個中一個。   Hashtable是同步的。  

HashMap類  
HashMap和Hashtable相似,分歧的地方在於HashMap長短同步的,而且許可null,即null   value和null   key。,然則將HashMap視為Collection時(values()辦法可前往Collection),其迭代子操作時光開支和HashMap的容量成比例。是以,假如迭代操作的機能相當主要的話,不要將HashMap的初始化容量設得太高,或許load   factor太低。  

WeakHashMap類  
WeakHashMap是一種改良的HashMap,它對key實施“弱援用”,假如一個key不再被內部所援用,那末該key可以被GC收受接管。

HashSet請參考對Set的描寫  
Set是一種不包括反復的元素的Collection,即隨意率性的兩個元素e1和e2都有e1.equals(e2)=false,Set最多有一個null元素。  

Set的結構函數有一個束縛前提,傳入的Collection參數不克不及包括反復的元素。  
請留意:必需當心操作可變對象(Mutable   Object)。假如一個Set中的可變元素轉變了本身狀況招致Object.equals(Object)=true將招致一些成績。

兩個通用Set完成是HashSet和TreeSet。要決議用哪個,那長短常簡略清楚明了的。HashSet要快很多(對年夜多半操作是常數時光之於對數時光(constant   time   vs.   log   time)),   但不供給排序包管。假如你須要應用   SortedSet   中的操作,或許按次序迭代對你來講是主要的,那末請應用   TreeSet。   不然,應用   HashSet。   在年夜多半時光都不應用   HashSet   ,對你來講是個公正的賭錢。    

關於HashSet,有一件事應當切記,即就條目數和容量之和來說,迭代是線性的。是以,假如迭代機能很主要,那就應當鄭重選擇一個恰當的初始容量。容量選得太年夜,既糟蹋空間,也糟蹋時光。   默許的初試容量是101,   普通來說,它比你所須要的要多。可使用   int   結構函數來指定初始容量。要分派   HashSet   的初始容量為17:    

Set  s=  new  HashSet(17);    

HashSets尚有一個稱作   裝載因數(load   factor)的"調劑參數(tuning   parameter)"   。假如你異常在意你的HashSet的空間的應用,請浏覽HashSet文本以獲得具體信息。不然,就應用默許值吧。假如你接收默許裝載因數,但你確切又想指定初始容量,那末,選一個年夜約是你希冀你的   Set   將增加到的容量的兩倍的數。假如你的猜想不著邊,它也能夠增加,或只是糟蹋一點空間。但都沒有年夜成績。假如你曉得有關准確尺寸的一個最好值,用它吧;假如不曉得,那就應用一個舊的值,或應用一個偶數值。它真的不長短常主要。這些工作只能使   HashSet   稍稍變好一點點。    

TreeSet沒有調劑參數。除clone以外,HashSet和TreeSet都唯一那些由它們各自的接口所請求的操作(Set和TreeSet),而沒有任何其余操作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved