Java Collection架構:你可能不知道的一些小知識

來源:互聯網
上載者:User

 

 

關於Java Collection Framework,你可能已經知道如下一些事實

  1. Vector是安全執行緒的,ArrayList不是
  2. ArrayList的讀操作比LinkedList快,LinkedList的append操作比ArrayList快
  3. Set中不可能有兩個相等的元素,也就是說,如果e1和e2都在同一個Set中,那麼不可能有e1.equals(e2)
  4. HashMap是線程不安全的,HashTable是安全執行緒的

但是你可能還不知道或者不瞭解這些事情:

  1. LinkedList不是安全執行緒的
  2. 不管是在多線程還是單線程的環境下,ArrayList都要比Vector快很多倍
  3. Set中可以插入null,不過最多隻會有一個
  4. HashMap中可以插入null,HashTable中不行
  5. TreeSet使用compareTo代替equals判斷是否兩個元素相等
  6. HashMap中的元素,無論是keySet還是valueSet,都不一定是按照插入時間先後排序的,HashSet也一樣
  7. 對於非安全執行緒的類,比如HashMap,ArrayList,TreeSet,可以使用Collections.synchronizedXXX方法(比如synchronizedSet,synchronizedList,synchronizedMap)
  8. 你可以使用Collections.unmodifiableList來構建出一個不能被修改的List
  9. 你可以使用Arrays.equals來判斷兩個數組是否相等
  10. WeakHashMap使用元素的引用而不是值作為key,也就是說必須在引用相同(a==b)的情況下才能找到相關的值
  11. 對於WeakHashMap,一旦引用失效,相應的值也就不存在了,比如下面一段代碼中:

 

{
function onclick()
{
dp.sh.Toolbar.Command('ViewSource',this);return false;
}
}" href="http://www.ondev.net/post/show/565">view plain{
function onclick()
{
dp.sh.Toolbar.Command('CopyToClipboard',this);return false;
}
}" href="http://www.ondev.net/post/show/565">copy to clipboard{
function onclick()
{
dp.sh.Toolbar.Command('PrintSource',this);return false;
}
}" href="http://www.ondev.net/post/show/565">print{
function onclick()
{
dp.sh.Toolbar.Command('About',this);return false;
}
}" href="http://www.ondev.net/post/show/565">?
  1. public class TestHashMap {    
  2.   
  3.     public static WeakHashMap wHmp= new WeakHashMap();    
  4.        
  5.     public static void main(String args[]){    
  6.        String s1 = new String("one");    
  7.        wHmp.put(s1,new Integer(1));    
  8.        addObject(wHmp);    
  9.        Set setHmp= wHmp.keySet();    
  10.            
  11.        for(Iterator it=setHmp.iterator();it.hasNext();){    
  12.           System.out.println(wHmp.get(it.next()));    
  13.       }    
  14.            
  15.    }    
  16.        
  17.    public static void addObject(WeakHashMap wHmp){    
  18.            
  19.      String s2 = new String("two");    
  20.      String s3 = new String("three");    
  21.      wHmp.put(s2,new Integer(2));    
  22.      wHmp.put(s3,new Integer(3));    
  23.      s2=null;    
  24.      s3=null;    
  25.      System.gc();    
  26.    }    
  27. }   

public class TestHashMap { </p><p> public static WeakHashMap wHmp= new WeakHashMap(); </p><p> public static void main(String args[]){<br /> String s1 = new String("one");<br /> wHmp.put(s1,new Integer(1));<br /> addObject(wHmp);<br /> Set setHmp= wHmp.keySet(); </p><p> for(Iterator it=setHmp.iterator();it.hasNext();){<br /> System.out.println(wHmp.get(it.next()));<br /> } </p><p> } </p><p> public static void addObject(WeakHashMap wHmp){ </p><p> String s2 = new String("two");<br /> String s3 = new String("three");<br /> wHmp.put(s2,new Integer(2));<br /> wHmp.put(s3,new Integer(3));<br /> s2=null;<br /> s3=null;<br /> System.gc();<br /> }<br />}<br />

 

最後列印出來的結果只有"one”

 

 

原文發表於: http://www.ondev.net/post/show/565

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.