国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

通過面試題,讓我們來了解Collection

HelKyle / 420人閱讀

摘要:說一說迭代器通過集合對象獲取其對應的對象判斷是否存在下一個元素取出該元素并將迭代器對象指向下一個元素取出元素的方式迭代器。對于使用容器者而言,具體的實現不重要,只要通過容器獲取到該實現的迭代器的對象即可,也就是方法。

前言

歡迎關注微信公眾號:Coder編程
獲取最新原創技術文章和相關免費學習資料,隨時隨地學習技術知識!**

本章主要介紹Collection集合相關知識,結合面試中會提到的相關問題進行知識點的梳理。希望能幫到大家~
基于JDK1.8,如有錯誤,還望大家能夠指出!

涉及的Collection集合相關面試題

1.什么是集合?

2.AVA中集合類型都有哪些?有什么特點?

3.說一說集合的父類Collection?

4.數組和集合都有哪些區別?

5.說一說迭代器Iterator

6.Collection接口中幾種重要的類和接口簡介

1.什么是集合?
 **來自百度百科的回答:**

集合類存放于java.util包中。

集合類存放的都是對象的引用,而非對象本身,出于表達上的便利,我們稱集合中的對象就是指集合中對象的引用(reference)。

集合類型主要有3種:set(集)、list(列表)和map(映射)。

集合接口分為:Collection和Map,list、set實現了Collection接口

2.JAVA中集合類型都有哪些?各有什么特點?

Collection兩大體系:鏈表List、集合Set

List特點:元素有序;元素可以重復;元素都有索引(角標)
List里存放的對象是有序的,同時也是可以重復的,List關注的是索引,擁有一系列和索引相關的方法,查詢速度快。
因為往list集合里插入或刪除數據時,會伴隨著后面數據的移動,所有插入刪除數據速度慢。

Set特點:元素無序;元素不可以重復;
Set里存放的對象是無序,不能重復的,集合中的對象不按特定的方式排序,只是簡單地把對象加入集合中。

同時集合中還有另外一種類型:Map(映射)。

Map特點:鍵值對;鍵不可以重復;值可以重復;
Map集合中存儲的是鍵值對,鍵不能重復,值可以重復。根據鍵得到值,對map集合遍歷時先得到鍵的set集合,對set集合進行遍歷,得到相應的值。

3.說一說集合的父類Collection? 3.1 Collection 體系結構圖

Collection

List (有序集合,允許相同元素和null)
  --LinkedList (非同步,允許相同元素和null,遍歷效率低插入和刪除效率高)
  --ArrayList (非同步,允許相同元素和null,實現了動態大小的數組,遍歷效率高,用的多)
  --Vector(同步,允許相同元素和null,效率低)
   ---Stack(繼承自Vector,實現一個后進先出的堆棧)

Set (無序集合,不允許相同元素,最多有一個null元素)
? --HashSet(無序集合,不允許相同元素,最多有一個null元素)

Map (沒有實現collection接口,key不能重復,value可以重復,一個key映射一個value)
  --Hashtable (實現Map接口,同步,不允許null作為key和value,用自定義的類當作key的話要復寫hashCode和eques方法,)
  --HashMap (實現Map接口,非同步,允許null作為key和value,用的多)
  --WeakHashMap(實現Map接口)
3.2 Collection 中的主要方法

(1)添加
boolean add(E o);
boolean add(Collection c);

(2)刪除
boolean remove(Object o);
boolean removeAll(Collection c)

void clear();

(3)判斷
a.判斷集合中是否有元素:boolean isEmpty();
b.判斷集合中是否包含某個元素:boolean contains(Object o);
c.判斷集合中是否包含某些元素:boolean contains(Collection c);

(4)獲取
a.獲取集合中元素個數:int size();
b.遍歷集合中所有元素:Iterator iterator();
c.判斷兩個集合中是否存在相同的元素并保留兩個集合中相同的元素刪除不同的元素:boolean retainAll(Collection c);

(5)其他
將集合中元素轉為數組:
a. Ojbect[] toArray();
b. T[] toArray(); 泛型

Java8新增方法
在 JDK 8 以后,Collection 接口還提供了從集合獲取連續的或者并行流:
Stream stream()
Stream parallelStream()
于Collection接口相關還有一個抽象類AbstractCollection:
AbstractCollection是一個抽象類,實現了Collection接口的部分功能,實現了一些最基本的通用操作,把復雜的和業務相關的延遲到子類實現。
在AbstractCollection中,主要實現了contains(), isEmpty(), toArray(), remove(), clear() 這幾個操作。有興趣的同學可以自行研究下,邏輯都比較簡單。

特別注意:List接口擴展了一個一些方法,其中最重要,也是用的最多的是:
E get(int index) 返回指定索引的元素
4.數組和集合都有哪些區別?

數組特點:

數組本質上就是一段連續的內存空間,用于記錄多個類型相同的數據;

數據一旦聲明完畢,則內存空間固定不變;

插入和刪除操作不方便,可能會移動大量的元素并導致效率太低;

支持下標訪問,可以實現隨機訪問;

數組中的元素可以是基本數據類型,也可以使用引用數據類型。

集合特點:

內存空間可以不連續,數據類型可以不相同;

集合的內存空間可以動態的調整;

集合的插入刪除操作可以不移動大量元素;

部分支持下標訪問,部分不支持;

集合中的元素必須是引用數據類型(你存儲的是簡單的int,它會自動裝箱成Integer);

可以看出數組和集合在數據的存儲,訪問,類型,長度等都有不同的地方。
5.說一說迭代器 Iterator?

通過集合對象獲取其對應的Iterator對象

判斷是否存在下一個元素

取出該元素并將迭代器對象指向下一個元素

Iterator iterator():取出元素的方式:迭代器。該對象必須依賴于具體容器,因為每一個容器的數據結構都不同。
所以該迭代器對象是在容器中進行內部實現的。對于使用容器者而言,具體的實現不重要,只要通過容器獲取到該實現的迭代器的對象即可,也就是iterator方法。

擴展知識:
ArrayList里面的iterator方法采用了設計模式中的——工廠方法模式!
有興趣的同學可以后續看到我另外的文章“設計模式精講”專欄。
6.Collection接口中幾種重要的類和接口簡介?

該問題與第二個問題類似~ 后續文章會有更詳細的介紹!

Collection兩大體系:鏈表List、集合Set 另映射Map

List接口及子類介紹

  List是有序的Collection,使用此接口能夠精確的控制每個元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似于數組下標)來訪問List中的元素,這類似于Java的數組。 和下面要提到的Set不同,List允許有相同的元素。 除了具有Collection接口必備的iterator()方法外,List還提供一個listIterator()方法,返回一個ListIterator接口,和標準的Iterator接口相比,ListIterator多了一些add()之類的方法,允許添加,刪除,設定元素,還能向前或向后遍歷。

  實現List接口的常用類有:

LinkedList類 (底層數據結構是鏈表,線程不安全)

ArrayList類 (底層數據結構是數組,線程不安全)

Vector類  (底層數據結構是數組,線程安全)

Stack類 (顧名思義:棧,繼承至Vector類并進行擴展)

在后續的文章中我們將一一詳細介紹這些類的相關特性!

Set接口及子類介紹

  Set是一種不包含重復的元素的Collection,即任意的兩個元素e1和e2都有e1.equals(e2)=false,Set最多有一個null元素。很明顯,Set的構造函數有一個約束條件,傳入的Collection參數不能包含重復的元素。   
注意:必須小心操作可變對象(Mutable Object)。如果一個Set中的可變元素改變了自身狀態導致Object.equals(Object)=true將導致一些問題。

  實現Set接口的常用類有:

HashSet類 (底層數據結構是數組+單鏈表+紅黑樹,無序)

LinkedHashSet (底層數據結構是數組+單鏈表+紅黑樹+雙向鏈表,無序)

TreeSet類 (底層數據結構紅黑樹,有序)

在后續的文章中我們將一一詳細介紹這些類的相關特性!

Map接口及子類介紹
注意:Map沒有繼承Collection接口,Map提供key到value的映射。一個Map中不能包含相同的key,每個key只能映射一個value。

Map接口提供3種集合的視圖,Map的內容可以被當作一組key集合,一組value集合,或者一組key-value映射。

Hashtable類

HashMap類   

在后續的文章中我們將一一詳細介紹這些類的相關特性!

文末
本章節介紹了Collection接口中的大部分可能在面試過程中會出現的內容,
并沒有詳細去介紹其子類及其實現相關的原理。這方面的內容會放在后續的章節中去詳細介紹。
歡迎關注微信公眾號:Coder編程
獲取最新原創技術文章和相關免費學習資料,隨時隨地學習技術知識!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73786.html

相關文章

  • 聊一聊Iterable與Iterator的那些事!

    摘要:接口中的方法該接口主要是返回類型的元素上的一個迭代器。被動作拋出的異常將被傳遞給調用者接口中的方法該方法提供了一個可以并行遍歷元素的迭代器以適應現在多核時代并行遍歷的需求。 前言 歡迎關注公眾號:Coder編程獲取最新原創技術文章和相關免費學習資料,隨時隨地學習技術知識! 在上一篇文章通過面試題,讓我們來了解Collection,我們會發現Collection接口之上還有一個接口Ite...

    honmaple 評論0 收藏0
  • Java集合總結【面試+腦圖】,將知識點一網打盡!

    摘要:而在集合中,值僅僅是一個對象罷了該對象對本身而言是無用的。將這篇文章作為集合的總結篇,但覺得沒什么好寫就回答一些面試題去了,找了一會面試題又覺得不夠系統。 前言 聲明,本文用的是jdk1.8 花了一個星期,把Java容器核心的知識過了一遍,感覺集合已經無所畏懼了!!(哈哈哈....),現在來總結一下吧~~ 回顧目錄: Collection總覽 List集合就這么簡單【源碼剖析】 Ma...

    yearsj 評論0 收藏0
  • Java面試前需要了解的東西

    摘要:我在面試前針對基礎也花了不少的時間,期間也將自己寫過的博文粗略地刷了一遍,同時也在網上找了不少比較好的資料部分是沒看完的??疵嬖囶}也是校驗自己是否真正理解了這個知識點,也很有可能會有新的收獲。 一、前言 只有光頭才能變強 回顧前面: 廣州三本找Java實習經歷 上一篇寫了自己面試的經歷和一些在面試的時候遇到的題目(筆試題和面試題)。 我在面試前針對Java基礎也花了不少的時間,期間也將...

    renweihub 評論0 收藏0
  • Java面試

    摘要:近段時間在準備實習的面試,在網上看到一份面試題,就慢慢試著做,爭取每天積累一點點。現在每天給自己在面試題編寫的任務是題,有時候忙起來可能就沒有時間寫了,但是爭取日更,即使當天沒更也會在之后的更新補上。 ????近段時間在準備實習的面試,在網上看到一份面試題,就慢慢試著做,爭取每天積累一點點。????暫時手頭上的面試題只有一份,題量還是挺大的,有208題,所以可能講的不是很詳細,只是我自...

    OnlyMyRailgun 評論0 收藏0

發表評論

0條評論

HelKyle

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<