国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 Java Java面試題 java集合面試題目

java集合面試題目

Dec 02, 2019 pm 04:27 PM
java

java集合面試題目

ArrayList和Vector的差異

這兩個類別都實作了List介面(List介面繼承了Collection介面),他們都是有序集合,即儲存在這兩個集合中的元素的位置都是有順序的,相當於一種動態(tài)的數(shù)組,我們以後可以按位置索引號取出某個元素,並且其中的資料是允許重複的。 (推薦學習:java面試題目) ?

這是與HashSet之類的集合最大的不同處,HashSet之類的集合不可以依索引號去檢索其中的元素,也不允許有重複的元素。

?ArrayList與Vector的差異主要包含兩個面向:.

(1)同步:

Vector是執(zhí)行緒安全的,也就是說是它的方法之間是執(zhí)行緒同步的,而ArrayList是線程式不安全的,它的方法之間是執(zhí)行緒不同步的。

如果只有一個線程會訪問到集合,那最好是使用ArrayList,因為它不考慮線程安全,效率會高些;如果有多個線程會訪問到集合,那最好是使用Vector ,因為不需要我們自己再去考慮、寫線程安全的程式碼。

(2)資料成長:

ArrayList與Vector都有一個初始的容量大小,當儲存進它們裡面的元素的數(shù)量超過了容量時,就需要增加ArrayList與Vector的儲存空間,每次要增加儲存空間時,不是只增加一個儲存單元,而是增加多個儲存單元,每次增加的儲存單元的數(shù)量在記憶體空間利用與程式效率之間要取得一定的平衡。

Vector預設成長為原來兩倍,而ArrayList的成長策略在文件中沒有明確規(guī)定(從原始碼看到的是成長為原來的1.5倍)。

ArrayList與Vector都可以設定初始的空間大小,Vector也可以設定成長的空間大小,而ArrayList並沒有提供設定成長空間的方法。

總結:也就是Vector成長原來的一倍,ArrayList增加原來的0.5倍。

HashMap和Hashtable的區(qū)別

HashMap是Hashtable的輕量級實作(非線程安全的實作),他們都完成了Map接口,主要差別在於HashMap允許空(null)鍵值(key),由於非執(zhí)行緒安全,在只有一個執(zhí)行緒存取的情況下,效率要高於Hashtable。

HashMap允許將null當作一個entry的key或value,而Hashtable不允許。

HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。

Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實作。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個執(zhí)行緒存取Hashtable時,不需要自己為它的方法實作同步,而HashMap就必須為之提供同步。

就HashMap與HashTable主要從三方面來說。

一.歷史原因:Hashtable是基於陳舊的Dictionary類別的,HashMap是Java 1.2引進的Map介面的一個實作

二.同步性:Hashtable是執(zhí)行緒安全的,也就是說是同步的,而HashMap是線程式不安全的,不是同步的

三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value

List和Map區(qū)別?

一個是儲存單列資料的集合,另一個是儲存鍵和值這樣的雙列資料的集合,List中儲存的資料是有順序,並且允許重複;Map中儲存的資料是沒有順序的,其鍵是不能重複的,它的值是可以有重複的。

List,Set, Map是否繼承自Collection介面?

#List,Set是,Map不是

##List、Map、Set三個接口,訪問元素時,各有什麼特點?

(這樣的題比較考水平,兩個方面的水平:一是要真正明白這些內(nèi)容,二是要有較強的總結和表述能力。)

首先,List與Set有相似性,它們都是單列元素的集合,所以,它們有一個共同的父接口,叫Collection。

Set裡面不允許有重複的元素,也就是不能有兩個相等(注意,不是僅僅是相同)的對象,也就是假設Set集合中有了一個A對象,現(xiàn)在我要向Set集合再存入一個B對象,但B對象與A對象equals相等,則B對象儲存不進去。

所以,Set集合的add方法有一個boolean的回傳值,當集合中沒有某個元素,此時add方法可成功加入該元素時,則傳回true,當集合含有與某個元素equals相等的元素時,此時add方法無法加入該元素,回傳結果為false。 Set取元素時,不能細說要取第幾個,只能以Iterator介面取得所有的元素,再逐一遍歷各個元素。

List表示有先後順序的集合,注意,不是那種會按年齡、大小、按價格之類的排序。當我們多次呼叫add(Obje)方法時,每次加入的物件就像火車站買票有排隊順序一樣,按先來後到的順序排序。

有時候,也可以插隊,也就是呼叫add(intindex,Obj e)方法,就可以指定目前物件在集合中的存放位置。

一個物件可以被重複儲存進List中,每呼叫一次add方法,這個物件就被插入進集合中一次,其實,並不是把這個物件本身儲存進了集合中,而是在集合中用一個索引變數(shù)指向這個對象,當這個對像被add多次時,即相當於集合中有多個索引指向了這個對象。

List除了可以用Iterator介面取得所有的元素,再逐一遍歷各個元素之外,還可以呼叫get(index i)來明確說明取第幾個。

Map與List和Set不同,它是雙列的集合,其中有put方法,定義如下:put(obj key,obj value),每次儲存時,要儲存一對key/value,不能儲存重複的key,這個重複的規(guī)則也是按equals比較相等。取則可以根據(jù)key取得對應的value,即get(Object key)傳回值為key所對應的value。

另外,也可以得到所有的key的結合,還可以得到所有的value的結合,也可以得到key和value組合成的Map.Entry物件的集合。

List以特定次序來持有元素,可有重複元素。 Set無法擁有重複元素,內(nèi)部排序。 Map保存key-value值,value可多值。

說出ArrayList,Vector,LinkedList的儲存效能與特性

ArrayList和Vector都是使用陣列方式儲存數(shù)據(jù),此陣列元素數(shù)大於實際儲存的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由於使用了synchronized方法(線程安全),通常性能上較ArrayList差。

而LinkedList使用雙向鍊錶實現(xiàn)存儲,按序號索引資料需要進行前向或後向遍歷,索引就變慢了,但是插入資料時只需要記錄本項的前後項即可,所以插入速度較快。

LinkedList也是線程不安全的,LinkedList提供了一些方法,使得LinkedList可以被當作堆疊和佇列來使用。

去掉一個Vector集合中重複的元素

Vector newVector = new Vector();
For (int i=0;i<vector.size();i++)
{
Object obj = vector.get(i);
if(!newVector.contains(obj);
     newVector.add(obj);
}

還有一個簡單的方式,利用了Set不允許重複元素:

HashSetset = new HashSet(vector);

Collection和Collections的差別。

Collection是集合類的上級接口,繼承他的接口主要有Set和List.

Collections是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜尋、排序、執(zhí)行緒安全化等操作。

Set裡的元素是不能重複的,那麼用什麼方法來區(qū)分重複與否呢?是用==還是equals()?它們有何區(qū)別?

Set裡的元素是不能重複的,元素重複與否是使用equals()方法來判斷的。

==和equal差異也是考爛了的題,這裡說一下:

==運算子專門用來比較兩個變數(shù)的值是否相等,也就是用於比較變數(shù)所對應的記憶體中所儲存的數(shù)值是否相同,要比較兩個基本型別的資料或兩個引用變數(shù)是否相等,只能用==運算子。

equals方法是用來比較兩個獨立物件的內(nèi)容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個物件是獨立的。

例如:兩個new語句創(chuàng)建了兩個對象,然後用a/b這兩個變數(shù)分別指向了其中一個對象,這是兩個不同的對象,它們的首地址是不同的,即a和b中儲存的數(shù)值是不相同的,所以,表達式a==b將傳回false,而這兩個物件中的內(nèi)容是相同的,所以,表達式a.equals(b)會傳回true 。

你所知道的集合類別都有哪些?主要方法?

最常用的集合類別是 List 和 Map。 List的具體實作包括 ArrayList和 Vector,它們是可變大小的列表,比較適合建構、儲存和操作任何類型物件的元素列表。 List適用於以數(shù)值索引存取元素的情況。

Map 提供了一個更通用的元素儲存方法。 Map集合類別用於儲存元素對(稱作"鍵"和"值"),其中每個鍵映射到一個值。

它們都有增刪改查的方法。

對於set,大概的方法是add,remove, contains等

對於map,大概的方法就是put,remove,contains等

List類別會有get( int index)這樣的方法,因為它可以依序取元素,而set類別中沒有get(int index)這樣的方法。 List和set都可以迭代出所有元素,迭代時先要得到一個iterator對象,所以,set和list類別都有一個iterator方法,用來傳回那個iterator物件。

map可以傳回三個集合,一個是傳回所有的key的集合,另外一個回傳的是所有value的集合,再一個回傳的key和value組合成的EntrySet物件的集合,map也有get方法,參數(shù)是key,返回值是key對應的value,這個自由發(fā)揮,也不是考記方法的能力,這些編程過程中會有提示,結合他們?nèi)叩牟煌f一下用法就行。

以上是java集合面試題目的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276
如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務,必須先關閉自動提交模式,再執(zhí)行多個操作,最後根據(jù)結果提交或回滾;1.調用conn.setAutoCommit(false)以開始事務;2.執(zhí)行多個SQL操作,如INSERT和UPDATE;3.若所有操作成功則調用conn.commit(),若發(fā)生異常則調用conn.rollback()確保數(shù)據(jù)一致性;同時應使用try-with-resources管理資源,妥善處理異常並關閉連接,避免連接洩漏;此外建議使用連接池、設置保存點實現(xiàn)部分回滾,並保持事務盡可能短以提升性能。

了解Java虛擬機(JVM)內(nèi)部 了解Java虛擬機(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過LocalDate、LocalDateTime和LocalTime獲取當前日期時間;3.使用of()方法創(chuàng)建特定日期時間;4.利用plus/minus方法不可變地增減時間;5.使用ZonedDateTime和ZoneId處理時區(qū);6.通過DateTimeFormatter格式化和解析日期字符串;7.必要時通過Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

比較Java框架:Spring Boot vs Quarkus vs Micronaut 比較Java框架:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

前形式攝取,quarkusandmicronautleaddueTocile timeProcessingandGraalvSupport,withquarkusoftenpernperforminglightbetterine nosserless notelless centarios.2。

垃圾收集如何在Java工作? 垃圾收集如何在Java工作? Aug 02, 2025 pm 01:55 PM

Java的垃圾回收(GC)是自動管理內(nèi)存的機制,通過回收不可達對象釋放堆內(nèi)存,減少內(nèi)存洩漏風險。 1.GC從根對象(如棧變量、活動線程、靜態(tài)字段等)出發(fā)判斷對象可達性,無法到達的對像被標記為垃圾。 2.基於標記-清除算法,標記所有可達對象,清除未標記對象。 3.採用分代收集策略:新生代(Eden、S0、S1)頻繁執(zhí)行MinorGC;老年代執(zhí)行較少但耗時較長的MajorGC;Metaspace存儲類元數(shù)據(jù)。 4.JVM提供多種GC器:SerialGC適用於小型應用;ParallelGC提升吞吐量;CMS降

了解網(wǎng)絡端口和防火牆 了解網(wǎng)絡端口和防火牆 Aug 01, 2025 am 06:40 AM

NetworkPortSandFireWallsworkTogetHertoEnableCommunication whereSeringSecurity.1.NetWorkPortSareVirtualendPointSnumbered0-655 35,with-Well-with-Newonportslike80(HTTP),443(https),22(SSH)和25(smtp)sindiessingspefificservices.2.portsoperateervertcp(可靠,c

比較Java構建工具:Maven vs. Gradle 比較Java構建工具:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

Gradleisthebetterchoiceformostnewprojectsduetoitssuperiorflexibility,performance,andmoderntoolingsupport.1.Gradle’sGroovy/KotlinDSLismoreconciseandexpressivethanMaven’sverboseXML.2.GradleoutperformsMaveninbuildspeedwithincrementalcompilation,buildcac

以身作則,解釋說明 以身作則,解釋說明 Aug 02, 2025 am 06:26 AM

defer用於在函數(shù)返回前執(zhí)行指定操作,如清理資源;參數(shù)在defer時立即求值,函數(shù)按後進先出(LIFO)順序執(zhí)行;1.多個defer按聲明逆序執(zhí)行;2.常用於文件關閉等安全清理;3.可修改命名返回值;4.即使發(fā)生panic也會執(zhí)行,適合用於recover;5.避免在循環(huán)中濫用defer,防止資源洩漏;正確使用可提升代碼安全性和可讀性。

See all articles