Thinking-in-Java 读书笔记-11-持有对象
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Thinking-in-Java 读书笔记-11-持有对象
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                原文地址
如果一個程序只包含固定數量的且其生命期都是已知的對象,那么這是一個非常簡單的程序。
通常,程序總是根據運行時才知道的某些條件去創建新對象,在此之前,不會知道所需對象的數量,甚至不知道確切的類型。為解決這個普遍的編程問題,需要在任意時刻和任意位置創建任意數量的對象。所以,就不能依靠創建命名的引用來持有每一個對象。
泛型和類型安全容器
在使用Java SE5之前的容器是允許你向容器中插入不正確的類型,為了避免這種錯誤,在之后對類型進行嚴格的編譯判斷。只有相同的類型或者直屬導出類才能創建容器。通過使用泛型,就可以在編譯器防止將錯誤類型的對象放置在容器中。
基本概念
Java容器類類庫的用途是“保存對象”,并將其劃分為兩個不同的概念:
容器的打印
通過代碼來看一下效果:
class PrintContainers {static Collection fill(Collection<String> collection) {collection.add("rat");collection.add("cat");collection.add("dog");collection.add("dog");return collection;}static Map fill(Map<String, String> map) {map.put("rat", "Fuzzy");map.put("cat", "Rags");map.put("dog", "Bosco");map.put("dog", "Spot");return map;}public static void main(String[] args) {System.out.println(fill(new ArrayList<String>()));System.out.println(fill(new LinkedList<String>()));System.out.println(fill(new HashSet<String>()));System.out.println(fill(new TreeSet<String>()));System.out.println(fill(new LinkedHashSet<String>()));System.out.println(fill(new HashMap<String, String>()));System.out.println(fill(new TreeMap<String, String>()));System.out.println(fill(new LinkedHashMap<String, String>()));} }輸出結果:
[rat, cat, dog, dog] [rat, cat, dog, dog] [rat, cat, dog] [cat, dog, rat] [rat, cat, dog] {rat=Fuzzy, cat=Rags, dog=Spot} {cat=Rags, dog=Spot, rat=Fuzzy} {rat=Fuzzy, cat=Rags, dog=Spot}List
有兩種 List類型的容器:
- ArrayList。它擅長于隨機訪問元素,但是在 List 中間插入數據和移除元素時比較慢。
- LinkedList。它通過代價低的在 List 中間進行插入和刪除操作,提供了優化的順序訪問。 LinkedList在隨機訪問方面相對比較慢,但是它的特性集較 ArrayList 更大。
迭代器
迭代器是一個對象,它的工作是遍歷并選擇序列中的對象,而客戶端程序不必知道或關心該序列底層的結構。此外迭代器通常被稱為 輕量級對象:創建它的代價小。
Java的 Iterator 只能單向移動,這個 Iterator 只能用來:
Set
Set 不保存重復的元素(至于如何判斷元素相同則較為復雜)。如果你視圖將相同對象的多個實例添加到 Set中,那么它就會阻止這種重復現象。
class SetTest {public static void main(String[] args) {Set<Integer> data = new HashSet<Integer>();data.add(1);data.add(2);data.add(3);data.remove(4);System.out.println(data.remove(1));System.out.println(data);} }Map
將對象映射到其他對象的能力是一種解決編程問題的殺手锏。
class MapTest {public static void main(String[] args) {Map<Integer, String> data = new HashMap<Integer, String>();data.put(2, "2");data.put(1, "1");data.put(3, "3");System.out.println(data);} }總結
Java 提供了大量持有對象的方式:
總結
以上是生活随笔為你收集整理的Thinking-in-Java 读书笔记-11-持有对象的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: The server returned
- 下一篇: 快速突破流量瓶颈的方法,需从如下五点数据
