摘要:如果一個程序只包含固定數量且其生命周期都是已知的對象,那么這是一個非常簡單的程序。
如果一個程序只包含固定數量且其生命周期都是已知的對象,那么這是一個非常簡單的程序。
1.泛型和類型安全的容器通過使用泛型,可以在編譯期防止將錯誤類型的對象放置到容器中.
2.基本概念Java容器類庫的用途是"保存對象",并將其劃分為兩個不同的概念:Collection,Map.
Collection:一個獨立元素的序列,這些元素都服從一條或多條規則.
Map:一組成對的"鍵值對"對象,允許你使用鍵來查找值.
3.添加一組元素在java.util包中的Arrays和Collections類中都有很多實用方法,可以在一個Collection中添加一組元素.
4.容器的打印默認的打印行為(使用容器提供的toString()方法)即可生成可讀性很好的結果.
5.ListList承諾可以將元素維護在特定的序列中.List接口在Collection的基礎上添加了大量的方法,使得可以在List的中間插入和移除元素.
有兩種類型的List:ArrayList,LinkedList.
ArrayList:擅長于隨機訪問元素,但是在List的中間插入和移除元素時比較慢.
LinkedList:在隨機訪問方面相對比較慢,但是它的特性集較ArrayList更大.
6.迭代器任何容器類,都必須有某種方式可以插入元素并將它們再次取回.
迭代器是一個對象,它的工作是遍歷并選擇序列中的對象,而客戶端程序員不必知道或關心該序列底層的結構.
迭代器通常被稱為輕量級對象:創建它的代價小.
ListIterator是一個更加強大的Iterator的子類型,它只能用于各種List的訪問.
7.LinkedListLinkedList也像ArrayList一樣實現了基本的List接口,但是它執行某些操作(在List的中間插入和移除)時比ArrayList更高效,但在隨機訪問操作方面卻要遜色一些.
LinkedList還添加了可以使其用作棧,隊列或雙端隊列的方法.
8.棧"棧"通常是指"后進先出"(LIFO)的容器.有時棧也被稱為疊加棧.
LinkedList具有能夠直接實現棧的所有功能的方法,因此可以直接將LinkedList作為棧使用.
9.SetSet不保存重復的元素.
Set具有與Collection完全一樣的接口,因此沒有任何額外的功能.
實際上Set就是Collection,只是行為不同.
Set是基于對象的值來確定歸屬性的(Set中最常被使用的是測試歸屬性:contains()).
10.Map將對象映射到其他對象.
11.QueueQueue是一個典型的先進先出(FIFO)的容器.
隊列在并發編程中特別重要,因為它們可以安全地將對象從一個任務傳輸到另一個任務.
LinkedList提供了方法以支持隊列的行為,并且它實現了Queue接口,因此LinkedList可以用作Queue的一種實現.
PriorityQueue:優先級隊列聲明下一個彈出元素就是最需要的元素(具有最高的優先級).
12.Collection和IteratorCollection是描述所有序列容器的共性的跟接口,它可能會被認為是一個"附屬接口",即因為要表示其他若干個接口的共性而出現的接口.
容器之間的共性是通過迭代器達成的,而不是Collection來表示.但是,這個兩個方法綁定到了一起,因為實現Collection就意味著需要提供iterator()方法.
13.Foreach與迭代器Java SE5引入了新的被稱為Iterable的接口,該接口包含一個能夠產生Iterator的iterator()方法,并且Iterable接口被foreach用來在序列中移動.
在Java SE5中,大量的類都是Iterable類型,主要包括所有的Collection類(但是不包括各種Map).
適配器方法的慣用法.
END
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71666.html
摘要:迭代器通常被成為輕量級對象創建它的代價很小。與迭代器可以用于數組和所有對象,之所以能夠工作,是因為繼承了接口。 點擊進入我的博客 我覺得本章名字改成容器似乎更好理解,持有對象讓人感到一頭霧水我們需要在任意時刻和任意位置創建任意數量的對象,所以依靠創建命名的引用來持有對象已經滿足不了需求。Java可以用數組和其他容器類來(List、Set、Queue、Map)來解決這個問題,不同的容器...
摘要:迭代器解決了這個問題。刪除后于是我們可以寫一個方法,接受一個類型,然后讓他調用方法,這就不需要考慮這個是個還是了,也就是說,可以將遍歷容器的操作與序列底層的結構分離,迭代器統一了對容器類的訪問方式。十二和兩種遍歷的方法,與迭代器方法。 一、泛型和類型安全的容器 package tij.hoding; import java.util.ArrayList; public class ...
摘要:方法接受一個對象,以及一個數組或是一個用逗號分隔的列表,并將元素添加到中。工作的很好,因為他從第一個參數中了解到了目標類型是什么。 ArrayList.asList() 接受一個數組或是用逗號分隔的元素列表,也可以用可變參數,然后將其轉為一個List對象。 Collections.addAll()方法接受一個Collection對象,以及一個數組或是一個用逗號分隔的列表,并將元素添加...
摘要:允許從任一方向來遍歷對象,并在遍歷迭代過程中進行修改該對象,還能獲得迭代器的當前位置。這個構造函數是將返回了一個對象給,這也是的存儲實現原理。 一、容器產生的原因 1.數組的缺點:大小一旦給定就無法更改,除非復制到一個新的數組中,開銷大;而容器類都可以自動地調整自己的尺寸。 2.容器功能的多樣性:容器可以實現各種不同要求,如按不同依據將元素進行排序或者保證容器內無重復元素等等。關...
摘要:如何檢測死鎖由于死鎖極難通過人工的方式查出來,因此提供了命令來檢測某個進程中心線程的情況,并排查有沒有死鎖。線程持有的鎖,等待的鎖。避免出現死鎖,如果出現了死鎖,則可以使用命令查看線程是否有死鎖。 showImg(https://segmentfault.com/img/remote/1460000014936757); 前言 在 Java 的并發編程中,有一個問題需要特別注意,那就是...
閱讀 1079·2021-11-16 11:44
閱讀 1368·2019-08-30 13:12
閱讀 2401·2019-08-29 16:05
閱讀 3070·2019-08-28 18:29
閱讀 904·2019-08-26 13:41
閱讀 3228·2019-08-26 13:34
閱讀 2596·2019-08-26 10:35
閱讀 931·2019-08-26 10:28