前言
只有光頭才能變強。
文本已收錄至我的GitHub精選文章,歡迎Star:https://github.com/ZhongFuCheng3y/3y
如果認識我的同學可能就知道,我已經寫過很多系列級的文章了,但是沒有一篇是寫給剛入門的同學來看的,大多數都是依照我個人的學習進度來編寫。
雖然可以按照我的文章順序去一篇一篇閱讀,但是如果是新入門的同學可能更希望得到的是一個學習指南(路線指引)。於是我就有了這篇文章,希望對剛入門的同學有所幫助。
如果這篇文章的反響不錯,會持續更新其他的專題。覺得我寫得不錯,希望可以給我一個贊!
Java集合學習指南
本文會提出很多可能新手會想到的問題,但不會一一解答,只會往大方向去說明白。本文的內容偏向於指南,而非技術教程講解。
如果想要得到具體的答案,可以翻閱我曾經寫過的資料:https://github.com/ZhongFuCheng3y/3y,或者加入人才交流群跟眾多開發者討論,前面的Github鏈接有我的聯系方式。
學習一項技術之前,必須知道為什么要學它!
Q: 我們得知道為什么要學習Java集合,學到Java集合的時候已經學過了數組了,為什么我不用數組反而用Java集合。數組和Java集合有什么區別?
A:Java是一門面向對象的語言,就免不了處理對象,為了方便操作多個對象,那么我們就得把這多個對象存儲起來,想要存儲多個對象(變量),很容易就能想到一個容器(集合)來裝載
總的來說:就是Java給我們提供了工具方便我們去操作多個Java對象。
如何入門學習Java集合
Q: 從上面我們已經知道了為什么要學Java集合,下面我們就該知道Java集合的基本用法,以及從它整體的知識點去了解它是什么
A: 我們學習Java集合實際上就是為了方便操作多個對象,而Java給我們提供一系列的API(方法)供我們去操作。所以在初學Java集合的時候我們更多的是學習這些API(方法)分別是什么意思。
Q: 對Java集合的API使用有一定的了解之后,我們就應該從面向對象的角度去理解它。為什么會抽象出多個接口,以及每個接口的有什么特性。
A: 我們可以總結出幾個常用的實現類,這幾個常用的實現類我們必須要知道它的數據結構是什么,什么時候使用這個類。
需要學習和了解的數據結構:
到這里,我們簡單了解各個實現類的數據結構以后,我們可能會簡單記住下面的結論:
- 如果是集合類型,有List和Set供我們選擇。List的特點是插入有序的,元素是可重復的。Set的特點是插入無序的,元素不可重復的。至於選擇哪個實現類來作為我們的存儲容器,我們就得看具體的應用場景。是希望可重復的就得用List,選擇List下常見的子類。是希望不可重復,選擇Set下常見的子類。
- 如果是
Key-Value
型,那我們會選擇Map。如果要保持插入順序的,我們可以選擇LinkedHashMap,如果不需要則選擇HashMap,如果要排序則選擇TreeMap。 - 總之:學完常見實現類的數據結構之后,你對它的使用場景就有一個清楚的認知了。
集合進階與面試
如果我們在寫代碼的時候懂得選擇什么樣的集合作為我們的容器,那已經是入門了。但要知道的是,如果去面試之前,你懂的不應該只有這么少。
(如果還在初學或者零基礎的同學我建議可以跳過這一部分,在網上有可能很多言論,比如:“如果你Java基礎扎實的話,那你以后找工作就不愁了。在學Java基礎的時候一定要把基礎學好,看源碼!”。但我認為,這一塊是建立在有一定的編碼/項目或者是去找工作的時候才成立的,一個剛入門學Java的,就不應該看源碼,這很容易把自己勸退了)
我的觀點是:如果剛入門學Java,首先你要十分清楚知道為什么要學這個,這個到底有什么用,用在哪些地方,以及熟悉常用的方法,就足夠了。即便你花了兩周左右時間去看源碼實現了,可能看懂了。但是,你相信我,你大概率會忘掉。
Java集合是面試的重點,我在面試的時候幾乎每家公司都會問集合的問題,從基礎到源碼,一步一步深入。Java集合面試的知識點就不限於基本的用法了。可能面試官會問你:
- HashMap的數據結構是什么?他是怎么擴容的?底層有沒有用紅黑樹?取Key Hash值是JDK源碼是怎么實現的?為什么要這樣做?
- HashMap是線程安全的嗎?什么是線程安全?有什么更好的解決方案?那線程安全的HashMap是怎么實現的?
- HashSet是如何判斷Key是重復的?
- .....很多很多
如果想要得到具體的答案,可以翻閱我曾經寫過的資料:https://github.com/ZhongFuCheng3y/3y,或者加入人才交流群跟眾多開發者討論,前面的文章鏈接有我的聯系方式。
腦圖的原圖在GitHub上也有獲取的方式
最后
總的來說,入門Java集合並不難,歸根到底我認為就是三件事:
- 了解為什么要學習Java集合
- 學習Java集合的各個接口以及常用的實現類用法
- 學習常用實現類的數據結構是什么,能在寫代碼的時候選擇一個合適的實現類裝載自己的對象。
零基礎入門不需要閱讀源碼,面試前一定要回顧和閱讀源碼(這是面試必考的知識點)!
本已收錄至我的GitHub精選文章,歡迎Star:https://github.com/ZhongFuCheng3y/3y
樂於輸出干貨的Java技術公眾號:Java3y。公眾號內有300多篇原創技術文章、海量視頻資源、精美腦圖,關注即可獲取!
非常感謝人才們能看到這里,如果這個文章寫得還不錯,覺得「三歪」我有點東西的話 求點贊 求關注️ 求分享👥 求留言💬 對暖男我來說真的 非常有用!!!
創作不易,各位的支持和認可,就是我創作的最大動力,我們下篇文章見!