Java _ JDK _ Arrays, LinkedList, ArrayList, Vector 及Stack

(最近在看JDK源碼,只是拿著它的繼承圖在看,但很多東西不記錄仍然印象不深,所以開始記錄JDK閱讀系列。)

(一)Arrays

  • Arrays比較特殊,直接繼承自Arrays -》List(Interface) -》Collection(Interface)。
  • (Maybe因為Java中的數組本身就比較特殊?)
  • 包含一些用來操作數組的一些方法,比如排序,搜索,復制,填充,toString方法等;
    • 搜索使用二分搜索;
    • 排序:使用DualPivotQuickSort中的排序算法,基本是改進版的快速排序,但里面做了很多性能改進。
      • 當數組元素比較少時使用插入排序,或者改進后的插入排序(每次兩個元素一起插);
      • 當數組元素較大時才會使用快排,使用兩個pivot,將數組劃分成四部分:<pivot1, pivot1<x<pivot2, 未排序, >pivot2
      • 整個排序過程看起來有些麻煩,但確實提高了排序性能,下面會寫專門一篇排序的(數組排序應該也是Arrays類中的關鍵及精髓了)

?

(二)LinkedList

  • 繼承關系為:LinkedList -》Abstract Sequential List -》 Abstract List
  • 使用鏈表的各種操作,其中為了提高效率,類中有first和last變量記錄鏈表的首部和尾部;每個節點都會有前驅和后繼;
  • 這里要注意的是序列化的問題:
    • 所有的私有成員變量都標識為transient,表示這些變量不會使用統一的序列化方法,而是由用戶自己定制。
    • 序列化與反序列化:對象的序列化是指將Object對象轉化為byte序列,反之叫做對象的反序列化
      • 序列化:ObjectOutputStream, ?反序列化:ObjectInputStream
      • 序列化的好處:能夠自動彌補不同操作系統之間的差異。可以在運行Windows操作系統的計算機上創建一個對象,將其序列化,通過網絡將它發送給一臺運行Unix系統的計算機,然后在那里能夠準確的重新組裝,而不必擔心數據在不同機器上的表示會不同,也不必關心字節的順序或者其他任何細節;

?

(三)Vector

  • 繼承關系為:vector -》 List(Interface), RandomAccess(Interface), AbstractList
  • 使用數組存儲所有元素;
  • 擴容:可以在構造函數中指定擴容大小;當容量溢出時擴容則為2倍擴;
  • 大部分讀寫方法都是synchronized,所以是線程安全的。

?

(四)ArrayList

  • 繼承關系為:ArrayList -》 List(Interface), RandomAccess(Interface), AbstractList
  • 擴容:每次擴容為原來的1.5倍
  • 基本如同數組的操作。

?

(五)Stack

  • 繼承關系為:Stack-》Vector
  • 所以使用了vector類的很多方法,然后封裝在pop,push,peek等方法中,實現stack的基本要求。

?

轉載于:https://www.cnblogs.com/little-YTMM/p/5530846.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372970.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372970.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372970.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

server2016做文件服務器,『配置』服務器搭建 Office Online Server2016 實現文檔預覽 番外 錯誤篇...

安裝一個或多個角色、角色服務或功能失敗。找不到源文件。請再次嘗試在新的“添加角色和功能”向導會話中安裝角色、角色服務或功能&#xff0c;然后在向導的“確認”頁中單擊“指定備用源路徑”以指定安裝所需的源文件的有效位置。目標服務器的計算機帳戶必須能夠訪問該位置。…

Java High CPU故障排除指南–第1部分

本文是該系列的第1部分&#xff0c;它將為您提供有關如何進行故障排除和識別Java高CPU問題根本原因的綜合指南。 該指南也適用于獨立的Java程序&#xff0c;但旨在幫助涉及Java EE企業日常生產支持的個人。 它還將包括最常見的高級CPU問題列表以及高級解決方案。 生產問題解決…

PHP數據結構之三 線性表中的單鏈表的PHP實現

線性表的鏈式存儲&#xff1a;用一組任意的存儲單元存儲線性表中的數據元素。用這種方法存儲的線性表簡稱線性鏈表。 鏈式存儲線性表的特點&#xff1a;存儲鏈表中結點的一組任意的存儲單元可以是連續的&#xff0c;也可以是不連續的&#xff0c;甚至是零散分布在內存中的任意位…

php進程間通信 yoc_swoole的process模塊創建和使用子進程

swoole中為我們提供了一個進程管理模塊 Process&#xff0c;替換PHP的 pcntl 擴展&#xff0c;方便我們創建進程&#xff0c;管理進程&#xff0c;和進程間的通信。swoole提供了2種進程間的通信&#xff1a;1、基于 unix socket 的管道 pipe。2、基于 sysvmsg 的消息隊列。我們…

ajax回復留言,Ajax 留言板模擬

這一節我們利用 Ajax 制作一個留言板模擬&#xff0c;之所以叫模擬&#xff0c;是由于沒有將留言內容存入數據庫&#xff0c;而只是假像地處理&#xff0c;因為這里著重討論 Ajax&#xff0c;暫時就不涉及數據庫操作。這里我們模擬了留言失敗的情況&#xff0c;每次提交有 50% …

RabbitMQ:計劃郵件傳遞

本月初&#xff0c;我在ComoRichWeb上的RabbitMQ上做了一個演講&#xff0c;與會人員提出的一個問題是“是否可以發布一條消息供以后使用&#xff1f;” 我回答說&#xff0c;就我所知&#xff0c;這是不可能的&#xff0c;但是可能會有一些技巧來實現它。 好吧&#xff0c;今天…

mysqls壓力測試怎么用_阿里研究員:測試穩定性三板斧,我怎么用?

阿里妹導讀&#xff1a;如何治理測試穩定性問題&#xff1f;很多人會說&#xff1a;環境、流程管控、監控、工具化、加機器、專人負責、等等。這些都是對的。不過這些都是解決方案層面的&#xff0c;而不是方法論和理論體系層面的。今天&#xff0c;阿里研究員鄭子穎來說說測試…

HttpModule與HttpHandler詳解

ASP.NET對請求處理的過程&#xff1a;當請求一個*.aspx文件的時候&#xff0c;這個請求會被inetinfo.exe進程截獲&#xff0c;它判斷文件的后綴&#xff08;aspx&#xff09;之后&#xff0c;將這個請求轉交給 ASPNET_ISAPI.dll&#xff0c;ASPNET_ISAPI.dll會通過http管道&…

【iOS開發】---- 強大的UI修改工具 UIAppearance-有圖片效果

iOS5及其以后提供了一個比較強大的工具UIAppearance&#xff0c;可以輕松的統一你的界面&#xff0c;它提供如下兩個方法&#xff1a; (id)appearance (id)appearanceWhenContainedIn:(Class <>)ContainerClass,... 第一個方法是統一全部改&#xff0c;比如你設置UINav…

7月9日王者榮耀服務器維護,王者榮耀 7月9日體驗服停機更新公告

親愛的召喚師&#xff1a;為了增加版本的穩定性&#xff0c;我們計劃在2021年7月9日16:00-17:00對《王者榮耀》體驗服進行停機維護。【更新時間】7月9日16:00-17:00(15:30關閉PVP)【更新方式】停機更新【更新范圍】王者榮耀修煉之地體驗服【下載地址】體驗服更新完畢后&#xf…

使用Jetty設置JNDI(嵌入式)

我在開發工作區上運行嵌入式Jetty&#xff0c;從而節省了一些編譯和部署惡性循環的時間。 我與Jetty的合作不多&#xff0c;易用性使我著迷于它。 我需要設置JNDI才能檢索與數據庫相關的活動的連接池。 盡管某些地方有完整的文檔&#xff0c;但大多數都是分散的。 因此&#xf…

交華為換機access配置_華為交換機Hybrid接口及基礎配置

一、回顧VLANVLAN基本概念VLAN即虛擬局域網&#xff0c;是將一個物理的LAN在邏輯上劃分成多個廣播域(多個VLAN)的通信技術。VLAN內的主機間可以直接通信&#xff0c;而VLAN間不能直接互通&#xff0c;從而將廣播報文限制在一個VLAN內。由于VLAN之間的隔離&#xff0c;所以一些類…

HttpClient使用之下載遠程服務器中的文件(注意目錄遍歷漏洞)

參考文獻&#xff1a; http://bbs.csdn.net/topics/390952011 http://blog.csdn.net/ljj_9/article/details/53306468 1.下載地址 http://hc.apache.org/downloads.cgi Apache-》Projects-》HttpComponents 2.DownloadServlet 1 package com.servlet;2 3 import java.io.Buffer…

HDOJ-1263

水果 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5303 Accepted Submission(s): 2022 Problem Description夏天來了~~好開心啊,呵呵,好多好多水果~~Joe經營著一個不大的水果店.他認為生存之道就是經營最受顧…

django ajax form表單,Django學習系列之Form表單和ajax(示例代碼)

昵 稱&#xff1a;生 日&#xff1a;性 別&#xff1a; 男 女地 址&#xff1a;手 機 號&#xff1a;郵 箱&#xff1a;[修改]{% csrf_token %}$(\#jsEditUserBtn\).on(\click\, function(){var _self $(this),$jsEditUserForm $(\#…

git push 的符號筆有什么用_如何同步多個 git 遠程倉庫

點擊上方“后端技術精選”&#xff0c;選擇“置頂公眾號”技術文章第一時間送達&#xff01;作者&#xff1a;taadismy.oschina.net/taadis/blog/3073220題外話&#xff0c;開發中遇到問題或者學習新技術時缺少交流環境&#xff0c;可以點擊加入【后端技術交流群】日常需求以前…

Java EE重新審視設計模式:觀察者

除了以多種語言和許多應用程序實現之外&#xff0c;Observer Pattern自1.0版以來一直是Java的一部分。 觀察者模式也是好萊塢原則的良好實施。 就像好萊塢的特工喜歡回調候選人以代替某個職位&#xff0c;而不是每天被要求詢問可用工作一樣&#xff0c;大多數服務器端資源&…

POI搜索簡介

用戶輸入——用戶輸出-----------------------------------------------------------而POI搜索引擎&#xff0c;需要做的就是拿到輸入條件&#xff0c;給出用戶比較滿意的結果。用戶角度&#xff1a;輸入&#xff1a;盡量簡單&#xff0c;且符合心意輸入時的假設&#xff1a;假…

2、Spring的 IoC詳解(第一個Spring程序)

Spring是為了解決企業應用開發的復雜性而創建的一個輕量級的控制反轉&#xff08;IoC&#xff09;和面向切面&#xff08;AOP&#xff09;的容器框架。在這句話中重點有兩個&#xff0c;一個是IoC&#xff0c;另一個是AOP。今天我們講第一個IoC。 一. IoC理論的背景 我們都知道…

排除服務器簡單系統故障方法,引導CD排除服務器故障方法有哪些?

盡管Linux系統以穩定可靠著稱&#xff0c;但由于硬件問題有時仍會崩潰/或無法引。針對這一問題&#xff0c;最好的解決辦法就是使用Linux系統引導CD。為了方便讀者&#xff0c;筆者在下面列出了安裝Red Hat Linux 8。0的最必須步驟。為安裝過程作筆記在Red Hat Linux系統典型安…