JAVA集合入門問題(原創)

· 問題:
· 既然有了數組,爲什麼還要ArrayList?__________
· 答:因爲數組大小本來不可變;如果要變化,則必須重新分配內存,太消耗資源。
· 數組只能同一種基本數據類型;或者同一個類的對象(排除Object)。
· ArrayList中有重複元素嗎?______,因爲_______。增加值的順序是1,3,4,5,1,那麼輸出的的值順序爲(考慮重複值和值的排序):_______。
· 答:有。因爲ArrayList也是在Array的基礎之上開發的(或者說:封裝了數組),由於數組可以保存重複元素的值,所以ArrayList也可以。輸入的值順序爲1,3,4,5,1。道理相同。
· TreeSet中有重複元素嗎?________,因爲_______。增加值的順序是1,3,4,5,1,那麼輸出的的值順序爲_______
· 答:無。因爲:ArrayList叫做有序列表,有順序就可以通過下標來標識,所以元素可以重複。Set叫做無序列表,只能通過值的本身來標識,所以值是不以重複的;由於無序,所以每次輸出的結果不可預料。輸出結果爲:1,3,4,5(可能的順序,關鍵是重複的1沒有出現。在JDK5.0以後,1可以自動由int轉化爲Integer類型)。
· 當數據集經常在中間插入、刪除時,用集合的哪種類型:_______,因爲______。
· 答:LinkedList。因爲:LinkedList叫做鏈表;鏈表的數據結構適合在元素增加或減少時,對整體的內存沒有影響;只是影響兩個相鄰的元素。而ArryList是底層封裝了Array,所以在元素變化時仍然要重新分配內存。
· 當數據集常在後面追加時,用_______,因爲_____________。
· 答:用ArrayList。因爲SUN針對這個問題做了比較好的封裝。
· 單個循環輸出,效率比較高的是________,因爲___________。
· 答::用ArrayList,因爲它是有序列表,是通過下標進行訪問的,所以效率最高。
· Vector與ArrayList的區別是:________。
· 答:兩者功能完全相同。但是Vector用於多線程,不會有線程安全問題。因爲Vector用了Sychronized關鍵字。而ArrayList沒有用,所以ArrayList線程不安全,Vector線程安全。但是Vector被稱爲“過時的”,是不是就不能用了呢。不是。稱爲過時的原因是因爲ArrayList很容易就變成線程安全的(加一句代碼即可),這樣ArrayList即可以用於單線程環境,又可以很方便地在多線程環境中使用,所以相比之下Vector就過時了。
· Set中的元素都是不能重複的,那HashSet與TreeSet的區別?
答:假設輸入值的順序爲:1,4,3,1,用HashSet輸出的順序爲:1,4,3(可能);用TreeSet輸出的順序爲:1,3,4(如Windows的文件夾,不能重複,且有順序)。
· HashTable與HashMap的區別是:_______
答:Table就是表的意思(如學生表的學號列,特徵是不能重複,而且不能爲空。表是可以多個人訪問的,所以線程是安全的)。HashMap的Key值是可以爲空的,線程是不安全的。

 

發佈了1 篇原創文章 · 獲贊 0 · 訪問量 2853
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章