本部分描述了一些小型實現,這些實現在您不需要它們的全部功能時,比一般用途的實現更方便、更高效。本節中的所有實現都是通過靜態工廠方法而不是公共類提供的。
arrays.aslist方法返回陣列引數的列表檢視。對列表的更改將寫入到陣列,反之亦然。集合的大小是陣列的大小,不能更改。如果在列表上做新增或刪除,將會返回unsupportedoperationexception。
這個實現的正常使用是基於arraybased和基於集合的api之間的橋梁。它允許您將陣列傳遞給期望乙個集合或列表的方法。然而,這個實現還有另乙個用途。如果您需要乙個固定大小的列表,那麼它比任何通用的列表實現都要高效。這是成語。
listlist = arrays.aslist(new string[size]);
注意,不保留對支援陣列的引用。
有時您需要乙個不可變的列表,其中包含相同元素的多個副本的集合。ncopy方法返回這樣的列表。這個實現有兩個主要用途。第乙個是初始化乙個新建立的列表; 例如,假設您希望乙個arraylist最初包含1,000個空元素。下面的這樣寫可以奏效。
listlist = new arraylist(collections.ncopies(1000, (type)null);
當然,每個元素的初始值不需要為空。第二個主要用途是擴充套件現有的列表。例如,假設您想要將字串「fruit bat」的69個副本新增到列表的末尾< string >。不清楚你為什麼想做這樣的事,但我們假設你做了。以下是你的做法。
lovablepets.addall(collections.ncopies(69, "fruit bat"));
通過使用包含索引和集合的addall的形式,您可以將新元素新增到列表的中間,而不是在列表的末尾。
不可變的單集
有時您需要乙個不可變的單例集,它由乙個單一的指定元素組成。的集合。singleton方法返回這樣的集合。這個實現的乙個用途是刪除集合中指定元素的所有出現。
c.removeall(collections.singleton(e));
乙個相關的習語從地圖中刪除對映到指定值的所有元素。舉個例子,假設你有乙個地圖-工作-把人們對映到他們的工作線上,假設你想要消除所有的律師。下面一行人將做這件事。
job.values().removeall(collections.singleton(律師));
這個實現的另乙個用途是向用於接收值集合的方法提供乙個單一的輸入值。
空集、列表和對映常量。
集合類提供了返回空集、列表和對映的方法——emptyset、emptylist和emptymap。這些常量的主要用途是作為方法的輸入,當您不想提供任何值時,這些方法會收集值,就像在本例中那樣。
tourist.declarepurchases(collections.emptyset());
java集合框架
集合框架包括集合與對映 collection and map 以及它們的子類 容器類 1 list 元素有先後次序的集合,元素有index位置,元素可以重複,繼承自collection介面,實現類 arraylist,vector,linkedlist 2 set 元素無續,不能重複新增,是數學意義...
java集合框架
框架 為了解決某一特定的問題,預先設計好的一系列具有繼承或實現關係的類的介面。集合裡的三大類 list直接繼承collection 特點 線性,有序 arraylist底層的實現是陣列 使用範圍 當某一陣列在實際應用中大量使用查詢和新增功能的時候用arraylist linkedlist底層的實現是...
java 集合框架
集合一般使用list,set,map首先說下list 1.list一般使用arraylist,linkedlist list的特點有序,重複,那麼arraylist和linkedlist的區別 arraylist插入和刪除資料慢,取值速度快,實際上arraylist是陣列的擴充 linkedlist...