国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java 編程思想 - Chapter11&Chapter17- 不同容器之間的比較

imtianx / 680人閱讀

摘要:中所有方法都是直接或者間接同步的,所以是線程安全的即多個線程操作同一個對象時是線程安全的,但是只有一個線程操作時考慮到同步控制會耗費系統資源所以效率低。中的所有方法都是線程非同步的,但有多個線程操作時是不安全的。

雖是讀書筆記,但是如轉載請注明出處http://segmentfault.com/blog/exploring/
..拒絕伸手復制黨

容器之間的區別通常歸結為:由什么在背后“支持”它們,即,所使用的接口是由什么樣的數據結構實現的。

# 對 List 的 選擇:

ArrayList 和 LinkedList 基本的 List 操作是相同的。但是 ArrayList 底層是 數組實現的,LinkedList 是雙向鏈表實現的(其中每個對象包含數據的同時還包含指向鏈表中前一個元素和后一個元素的應用)。
因此,如果經常在表中插入刪除應該使用 LinkedList,如果大量隨機訪問元素,應該使用ArrayList.

最佳的做法可能是將 ArrayList 作為默認首選,只有你需要使用額外的功能,或者當程序的性能因為經常插入和刪除變差的時候,才去選擇LinkedList.

# 對 Set 的選擇

Set 可以被實現為 TreeSet, HashSet, LinkedHashSet. 可以根據所需要的行為來選擇不同的接口。

行為: HashSet 最常用,特別添加和查詢元素的時候速度快;
LinkedHashSet 保持元素的插入順序; 插入操作,LinkedHashSet 比HashSet 代價更高,這是由維護鏈表所帶來額外開銷造成的。
TreeSet 基于TreeMap,1. 生成一個維持元素處于排序狀態的Set. 只有當需要一個排好序的 Set 時,才應該使用TreeSet. 因為其內部結構支持排序。 2. 用 TreeSet 迭代速度比 HashSet 速度快。

# 對 Map 的選擇

除了 IdentityHashMap, 所有的Map實現插入和刪除操作都會隨著Map尺寸的變大而明顯變慢。但是查找的代價要比插入小很多。

Hashtable 的性能大體上與 HashMap 相當,因為HashMap 是用來替代 Hashtable 的,因此他們使用了相同的底層和查找機制。使用 Map 時候,第一選擇應該是hashmap.
LinkedHashMap 比 HashMap 慢, 代價更高,這是由維護散列結構的同時還要維護鏈表所帶來額外開銷造成的。
TreeMap 通常比 HashMap 慢。 與使用 TreeSet 一樣,TreeMap 是一種創建有序列表的方式。
IdentityHashMap 具有完全不同的性能,因為它使用 == 而不是 equal() 來比較元素。

應該避免使用Vector,它只存在于支持遺留代碼的類庫中。

ArrayList 和 Vector 區別?
Vector 和 ArrayList 都是基于Object[] array 數組來實現的,根據索引來訪問元素。二者最大的區別就是同步的使用。
Vector 中所有方法都是直接或者間接同步的,所以 Vector 是線程安全的(即多個線程操作同一個 vector 對象時是線程安全的),但是只有一個線程操作時考慮到同步控制會耗費系統資源所以效率低。
ArrayList 中的所有方法都是線程非同步的,但有多個線程操作時是不安全的。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64239.html

相關文章

  • 第二十七章:SpringBoot使用ApplicationEvent&Listener完成業

    摘要:實體代碼如下所示恒宇少年碼云用戶名密碼創建內添加一個注冊方法,該方法只是實現注冊事件發布功能,代碼如下所示恒宇少年碼云用戶注冊方法省略其他邏輯發布事件事件發布是由對象管控的,我們發布事件前需要注入對象調用方法完成事件發布。 ApplicationEvent以及Listener是Spring為我們提供的一個事件監聽、訂閱的實現,內部實現原理是觀察者設計模式,設計初衷也是為了系統業務邏輯之...

    Reducto 評論0 收藏0
  • Spring Boot 2.x基礎教程:快速入門

    摘要:編寫一個接口創建命名為根據實際情況修改創建類,內容如下啟動主程序,使用等工具發起請求,可以看到頁面返回編寫單元測試用例打開的下的測試入口類。 簡介 在您第1次接觸和學習Spring框架的時候,是否因為其繁雜的配置而退卻了?在你第n次使用Spring框架的時候,是否覺得一堆反復黏貼的配置有一些厭煩?那么您就不妨來試試使用Spring Boot來讓你更易上手,更簡單快捷地構建Spring應...

    tigerZH 評論0 收藏0
  • 第三十章:SpringBoot使用MapStruct自動映射DTO

    摘要:商品類型實體恒宇少年碼云商品基本信息實體恒宇少年碼云接下來我們繼續創建相關的。注解是用于標注接口抽象類是被自動映射的標識,只有存在該注解才會將內部的接口方法自動實現。 MapStruct是一種類型安全的bean映射類生成java注釋處理器。我們要做的就是定義一個映射器接口,聲明任何必需的映射方法。在編譯的過程中,MapStruct會生成此接口的實現。該實現使用純java方法調用的源和目...

    weakish 評論0 收藏0
  • 第二十八章:SpringBoot使用AutoConfiguration自定義Starter

    摘要:代碼如下所示自定義業務實現恒宇少年碼云消息內容是否顯示消息內容,我們內的代碼比較簡單,根據屬性參數進行返回格式化后的字符串。 在我們學習SpringBoot時都已經了解到starter是SpringBoot的核心組成部分,SpringBoot為我們提供了盡可能完善的封裝,提供了一系列的自動化配置的starter插件,我們在使用spring-boot-starter-web時只需要在po...

    fasss 評論0 收藏0
  • 一起學并發編程 - 利用觀察者模式監聽線程狀態

    摘要:在前面的文章中介紹過觀察者模式及并發編程的基礎知識,為了讓大家更好的了解觀察者模式故而特意寫了這篇番外概述在多線程下我們需要知道當前執行線程的狀態是什么比如運行,關閉,異常等狀態的通知,而且不僅僅是更新當前頁面。 在前面的文章中介紹過 觀察者模式 及 并發編程的基礎知識,為了讓大家更好的了解觀察者模式故而特意寫了這篇番外.. 概述 在Java多線程下,我們需要知道當前執行線程的狀態是...

    Juven 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<