摘要:接口在類庫中有很多具體的實現。接口的意義是為各種具體的集合提供了最大化的統一操作方式。集合類框架的基本接口代表一組對象,每一個對象都是他的子元素不包含重復元素的有序的,可以包含重復元素將映射到的對象,不能重復。
寫在之前:
這篇文章是自己面試過程中,總結出來的關于Java集合類的總結。每次面試之前來出來看看,速度快,也能很迅速的回憶一些細節問題。發布這篇文章,不僅僅是希望大家“臨陣磨槍”,更希望大家能夠以此學習其內在原理。畢竟,源碼才是最正確的。
問題匯總: 1.ArrayList實現方式:數組;
超出容量的話,增加50%,使用System.arraycopy()復制到新的數組;
默認容量為10
get()和set()性能很高,但是add()/remove()性能差。
2.LinkedList實現方式:雙向循環鏈表;
沒有容量限制;
get()和set()性能差,但是add()/remove()性能很快。
3.Vector與ArrayList類似
線程同步
使用Iterator方式遍歷
自動增長原來一倍的數組長度
4.HashMap實現方式:Entry[]數組實現的哈希桶數組;
初始容量為16,填充因子為0.7,擴容為2倍
用Key的哈希值取模桶數組的大小可得到數組下標;
計算hash對key的hashcode進行了二次hash,以獲得更好的散列值,然后對table數組長度取摸
Entry用一個next屬性實現多個Entry以單向鏈表存放;
JDK8里,當一個桶里的Entry超過8后,就不以單向鏈表而以紅黑樹來存放以加快Key的查找速度。
5.HashMap和HashTable區別HashTable的方法前面都有synchronized來同步,是線程安全的;HashMap未經同步,是非線程安全的。
HashTable不允許null值(key和value都不可以) ;HashMap允許null值(key和value都可以)。
HashTable有一個contains(Objectvalue)功能和containsValue(Objectvalue)功能一樣。
HashTable使用Enumeration進行遍歷;HashMap使用Iterator進行遍歷。
HashTable中hash數組默認大小是11,增加的方式是old*2+1;HashMap中hash數組的默認大小是16,而且一定是2的指數。
哈希值的使用不同,HashTable直接使用對象的hashCode; HashMap重新計算hash值,而且用與代替求模。
6.Collection和Collections的區別java.util.Collection 是一個集合接口。它提供了對集合對象進行基本操作的通用接口方法。Collection接口在Java 類庫中有很多具體的實現。Collection接口的意義是為各種具體的集合提供了最大化的統一操作方式。
java.util.Collections 是一個包裝類。它包含有各種有關集合操作的靜態多態方法。此類不能實例化,就像一個工具類,服務于Java的Collection框架。
7.HashMap為什么容量是2的冪次詳見hashMap為啥初始化容量為2的次冪
8.hashCode和equals方法的關系equals相等,hashcode必相等;hashcode相等,equals可能不相等。
9.Java集合類框架的基本接口Collection:代表一組對象,每一個對象都是他的子元素;
Set:不包含重復元素的Collection;
List:有序的Collection,可以包含重復元素;
Map:將key映射到value的對象,key不能重復。
10.Enumeration接口與Iterator接口的區別Enumeration接口比Iterator速率的2倍
Iterator線程比Enumeration安全
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67770.html
摘要:原文地址游客前言金三銀四,很多同學心里大概都準備著年后找工作或者跳槽。最近有很多同學都在交流群里求大廠面試題。 最近整理了一波面試題,包括安卓JAVA方面的,目前大廠還是以安卓源碼,算法,以及數據結構為主,有一些中小型公司也會問到混合開發的知識,至于我為什么傾向于混合開發,我的一句話就是走上編程之路,將來你要學不僅僅是這些,豐富自己方能與世接軌,做好全棧的裝備。 原文地址:游客kutd...
摘要:強大的表單驗證前端掘金支持非常強大的內置表單驗證,以及。面向對象和面向過程的區別的種設計模式全解析后端掘金一設計模式的分類總體來說設計模式分為三大類創建型模式,共五種工廠方法模式抽象工廠模式單例模式建造者模式原型模式。 強大的 Angular 表單驗證 - 前端 - 掘金Angular 支持非常強大的內置表單驗證,maxlength、minlength、required 以及 patt...
摘要:我的是忙碌的一年,從年初備戰實習春招,年三十都在死磕源碼,三月份經歷了阿里五次面試,四月順利收到實習。因為我心理很清楚,我的目標是阿里。所以在收到阿里之后的那晚,我重新規劃了接下來的學習計劃,將我的短期目標更新成拿下阿里轉正。 我的2017是忙碌的一年,從年初備戰實習春招,年三十都在死磕JDK源碼,三月份經歷了阿里五次面試,四月順利收到實習offer。然后五月懷著忐忑的心情開始了螞蟻金...
閱讀 2311·2021-11-23 09:51
閱讀 3748·2021-11-11 10:57
閱讀 1391·2021-10-09 09:43
閱讀 2481·2021-09-29 09:35
閱讀 2013·2019-08-30 15:54
閱讀 1788·2019-08-30 15:44
閱讀 3179·2019-08-30 13:20
閱讀 1687·2019-08-30 11:19