java基礎—–集合!

來源:互聯網
上載者:User

1.何為集合?:

java中為了方便儲存物件。就產生了集合。

所以集合只用於儲存物件。集合的長度是可以變化的。也可以去儲存不同的對象。這裡要注意的是:

List<Integer> list = new ArrayList<Integer>();list.add(3);

這裡其實是java中自動進行了裝箱操作。將int類型的3裝箱成Integer類型的。在取出來的時候又自動拆箱。

2.集合分類:

 在java中一類集合直接儲存物件,則是去實現Collection.

另一類集合根據映射關係實現Map介面,具有索引值對關係。兩類介面共同組成了JAVA中的集合。

3.Collection

Collection能讓你去操作對象組,它是位於類集層次的最頂層。它根據是否允許元素的重複,分了兩大類。Set集合和List集合。

   List 主要去處理序列(對象的列表),其中允許對象的重複。如ArrayList,LinkedList和 Vector是三個主要實作類別。

   Set 主要去處理集合,集合必須包含唯一元素。

   其中還有一個比較重要,SortedSet 擴充了Set 集合去處理排序集合。
4.Map集合:

Map是一個儲存關鍵字和值的關聯或者說是索引值對的對象。可以去通過一個關鍵字來得到它的值。關鍵字的值都是對象。

但是要注意的是:關鍵字(key)必須唯一,不能重複,但是值(value)可以重複。但是在HashTableHashMap中的值可以為null.而在HashMap則是不可以的。

5.集合的安全執行緒問題:

Vector和HashTable是線程同步(synchronized)。ArrayList 和 HashMap則是線程不同步的。

這樣就導致了前者的安全性好,而效率不高。後者的效率高但是安全性不好。這樣就要線程不要求安全的時候用後者,否則用前者。

6.equal()和hashCode()

關於hashCode只有hashSet,hashMap等才會用到。對於ArrayList等不會用到。

對於hashSet之類的集合,每個對象要放入到集合中,在這之前,會去先根據自身的屬性,計算出一個hashCode值.當然這個hashCode方法是可以去選擇重載的。

然後再去找到在記憶體中hashCode值相同的地區,調用equal()方法比較有沒有相同的對象,如果沒有就存入集合中,如果存在對象,就不存入集合。

這裡要注意的就是只有當存在hashCode值相同的時候才會去調用equals 方法。否則是不調用的。

還有一點在注意:

當一個對象被存入hashSet中後,就不能修改這個對象的那些個參與電腦雜湊值的欄位了。否則,對象修改後的雜湊值與最初儲存進hashSet集合中的hashCode值不同了。

在這樣的情況下,技術在contains方法使用該對象的當前引用作為的參數去HashSet集合中檢索對象,也找不到返回對象的結果。這就會導致會無法去HashSet集合中單獨刪除對象,從而造成記憶體泄露。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.