HashMap中數組初始化的秘密

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

我們知道,在新建一個HashMap對象時,無論傳的initialCapacity參數值為多少,最總HashMap中數組的長度始終為2的n次方,代碼如下:

static final int tableSizeFor(int cap) {int n = cap - 1;n |= n >>> 1;n |= n >>> 2;n |= n >>> 4;n |= n >>> 8;n |= n >>> 16;return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
}

>>>表示忽略符號右移,不足補0

假設cap的值為10,那么n的值為9,對應二進制值為1001 經過n |= n >>> 1;計算,此時n對應的二進制值為1101 經過n |= n >>> 2;計算,此時n對應的二進制值為1111 依次類推,最后n對應的二進制的值為1111,對應十進制為15 根據最后的三元運算,該方法的返回值為16,也就是2的4次方

轉載于:https://my.oschina.net/u/436693/blog/1845017

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

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

相關文章

PLSQL 安裝+配置( Oracle數據庫連接工具 )

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.找到免安裝版本 PLSQL 解壓到自己想放的位置 &#xff08;比如 D:\ChengXu\PLSQL\PLSQL&#xff09; 2.配置環境變量 : 系統變量…

什么是Nginx?為什么使用Nginx?

一、前言為毛要用nginx服務器代理&#xff0c;不直接用tomcat 7.0&#xff0c;還做多了一次接請求&#xff1f;這個是我想問的&#xff0c;公司的新項目是要用Nginxtomcat7jdk開發的&#xff0c;用戶命名可以直接訪問tomcat&#xff0c;為啥還要用Nginx&#xff1f;這貨是個啥玩…

遵循五大設計理念 打造出色設計師

與其他設計不同&#xff0c;網頁設計會隨著時間的改變而不斷改變著。因此&#xff0c;網頁設計師需要不斷的自我提升&#xff0c;了解最前沿的設計趨勢以便能夠設計出更加新穎的網站。 兩年前&#xff0c;網頁設計呈現出一片新的思維方式和新穎的設計趨勢使得該領域彰顯出一片…

shell符號

*&#xff1a; 通配符 *.c &#xff1a; c結尾的文件 *v &#xff1a; v結尾的文件 v* &#xff1a; v開頭的文件轉載于:https://www.cnblogs.com/runlgs/p/9685751.html

偽共享和緩存行填充,Java并發編程還能這么優化!

前言 關于偽共享的文章已經很多了&#xff0c;對于多線程編程來說&#xff0c;特別是多線程處理列表和數組的時候&#xff0c;要非常注意偽共享的問題。否則不僅無法發揮多線程的優勢&#xff0c;還可能比單線程性能還差。隨著JAVA版本的更新&#xff0c;再各個版本上減少偽共享…

mysql中like % %模糊查詢

1&#xff0c;%&#xff1a;表示任意0個或多個字符。可匹配任意類型和長度的字符&#xff0c;有些情況下若是中文&#xff0c;請使用兩個百分號&#xff08;%%&#xff09;表示。 比如 SELECT * FROM [user] WHERE u_name LIKE %三% 將會把u_name為“張三”&#xff0c;“張貓三…

Java中判斷字符串是否為數字的五種方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 推薦使用第二個方法&#xff0c;速度最快。 方法一&#xff1a;用JAVA自帶的函數 Java代碼 public static boolean isNumeric(String…

慕學在線網0.4_xadmin后臺管理

admin是基于Django開發的后臺管理框架&#xff0c;方便&#xff0c;快捷&#xff0c;而且簡單&#xff1b;   而xadmin就相當于admin的升級版&#xff0c;更加強大。    1、安裝xadmin&#xff08;源碼安裝方式&#xff09;  教程 PS&#xff1a; - 卸載pip安裝的xadminp…

從一次換機器的過程談軟硬件的分離

今天把在公司使用的計算機更換了一臺&#xff0c;原來是Dell的780&#xff0c;換成了Dell的790&#xff0c;機箱的樣子變化比較大&#xff0c;但是里面硬件的配置變換并不大&#xff0c;最明顯的變化就在于CPU&#xff0c;其他像內存、硬盤等等的配置與原來的計算機基本上一致。…

知其所以然~redis的原子性

原子性 原子性是數據庫的事務中的特性。在數據庫事務的情景下&#xff0c;原子性指的是&#xff1a;一個事務&#xff08;transaction&#xff09;中的所有操作&#xff0c;要么全部完成&#xff0c;要么全部不完成&#xff0c;不會結束在中間某個環節。 對于Redis而言&#xf…

JoinPoint的用法

JoinPoint 對象 JoinPoint對象封裝了SpringAop中切面方法的信息,在切面方法中添加JoinPoint參數,就可以獲取到封裝了該方法信息的JoinPoint對象. 常用api: 方法名功能Signature getSignature();獲取封裝了署名信息的對象,在該對象中可以獲取到目標方法名,所屬類的Class等信息…

解決 No projects are available for deployment to this server!

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 如題&#xff0c;今天在嘗試部署從SVN上down下來的項目時&#xff0c;發現不能被tomcat識別成web項目&#xff01;原因是SVN上down下來的…

地大信工成果快報

在成果快報投稿中&#xff0c;請注意以下幾個問題&#xff1a;&#xff08;1&#xff09;成果信息一定要準確、全面&#xff0c;所有作者必須都要列出來&#xff0c;而不要出現et al. 這樣的表述&#xff0c;通訊作者一定要用*號標注&#xff1b;&#xff08;2&#xff09;成果…

javaBean的命名規則

前段時間&#xff0c;寫程序時&#xff0c;出了錯誤&#xff0c;竟然沒有想到是自己屬性命名的問題&#xff0c;哎~~~真是一定要注意規范呀&#xff0c;在這里我從網上找了些&#xff0c;規范作為參考 Sun 推薦的命名規范 1 &#xff0c;類名要首字母大寫&#xff0c;后面的單詞…

volatile的應用

volatile&#xff0c;中文意思是不穩定的、反復無常的&#xff0c;用來修飾變量&#xff0c;和多線程、并發有關系。 Java代碼在編譯后會變成Java字節碼&#xff0c;字節碼被類加載器加載到JVM里&#xff0c;JVM執行字節碼&#xff0c;最終需要轉化為匯編指令在CPU上執行。 在多…

漫談國內智能手機市場現狀

本文純屬一時興起&#xff0c;想到哪兒寫到哪兒&#xff0c;本人文筆也不咋地&#xff0c;寫的也比較隨意&#xff0c;如有錯誤歡迎指正&#xff0c;有啥意見歡迎交流。原創文章&#xff0c;轉載注明emouse的技術專欄。 我是一個不折不扣的數碼愛好者&#xff0c;對電腦手機這些…

【刷題】BZOJ 4195 [Noi2015]程序自動分析

Description 在實現程序自動分析的過程中,常常需要判定一些約束條件是否能被同時滿足。 考慮一個約束滿足問題的簡化版本&#xff1a;假設x1,x2,x3,…代表程序中出現的變量&#xff0c;給定n個形如xixj或xi≠xj的變量相等/不等的約束條件&#xff0c;請判定是否可以分別為每一個…

mysql 5.5 安裝配置方法圖文教程

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 回憶一下mysql 5.5 安裝配置方法&#xff0c;整理mysql 5.5 安裝配置教程筆記&#xff0c;分享給大家。 MySQL下載地址&#xff1a;htt…

git解除與遠程分支的關聯

在工作中&#xff0c;經常需要將同一份代碼傳到不同的git倉庫中去 如果本地同樣一份代碼&#xff0c;已經關聯了一個與遠程分支&#xff0c;那么怎么才能解除原程分支&#xff0c;并關聯到一個新的分支將代碼提交到新的分支上去呢&#xff1f; 1、如果你已經在遠程創建了一個分…

FindWindow用法

函數功能&#xff1a;該函數獲得一個頂層窗口的句柄&#xff0c;該窗口的類名和窗口名與給定的字符串相匹配。這個函數不查找子窗口。在查找時不區分大小寫。 函數型&#xff1a;HWND FindWindow&#xff08;LPCTSTR IpClassName&#xff0c;LPCTSTR IpWindowName&#xff0…