美團實習| 週記(二)

本週知識清單:

  • 開發小tips
  • Java基礎之集合類
  • 一些小感悟

1.開發小tipsandroid

看項目代碼的時候發現了一些不起眼但以爲蠻實用的小tips,在實習隨筆|週記(一)寫的tools命名空間就是一點,可幫助快速預覽佈局展現效果。接下來再提一些小技巧。git

a .值得收藏的AS插件 ,另推薦可用Statistic插件統計項目代碼總行數、Alibaba Java Coding Guidelines插件幫助規範代碼。github

b.你不知道的TextUtils用法,好比TextUtils.isDigitsOnly(string) 可檢查字符串中是否全是數字。算法

c.TextView屬性大全,好比android:drawableXXX系列配合android:drawablePadding 適合在文字側放固定大小的圖片。數組

d.TextView/string.xml冷門小技巧:佔位轉換符%1$s%2$d等的用法,其中%1$s表示第一個字符串、%2$d表示第二個整數。使用示例以下:安全

  • 在string.xml中先定義好格式:
<string name="instance">String.xml佔位轉換符:我叫%1$s,今年%2$d歲了,身高%3$f米。</string>
複製代碼
  • 代碼實現:
TextView tv=(TextView)findViewById(R.id.tv);
String format = getResources().getString(R.string.instance);
String result= String.format(format ,"minmin", 21 ,164.5);
tv.setText(result);
複製代碼
  • 輸出結果:
String.xml佔位轉換符:我叫minmin,今年21歲了,身高164.5米。
複製代碼


2.Java基礎之集合類bash

a.做用:負責保存和盛裝其餘數據,又稱容器類數據結構

  • 用於存儲數量不等的對象,並可實現經常使用的數據結構,如棧、隊列等
  • 用於保存具備映射關係的關聯數組

和數組的區別:多線程

  • 數組元素能夠是基本類型,也能夠是對象
  • 集合元素只能是對象

b.體系結構:大體可分爲Set、List、Queue 和Map四種體系。併發

  • Set:表明無序、不可重複的集合
  • List:表明有序、可重複的集合
  • Map:表明具備映射關係的集合
  • Queue:表明一種隊列集合

形象記憶

下圖給出Java集合類之間的關係。

c.篇幅有限,主要介紹上圖中紅色標註的幾個類/接口(須要瞭解源碼請點擊類名)。

(1)Collection接口

  • 是List、Set和Queue接口的父接口,該接口中定義的方法可操做以上三種集合。
  • 經常使用方法:添加對象add()、刪除對象remove()、清空容器clear()、判斷容器是否爲空isEmpty()等。

(2)List系列:有序、可重複

  • ArrayList特色:
    • 底層結構是數組,可用索引實現快速查找
    • 非線程安全,建議在單線程中才使用ArrayList,而在多線程中能夠選擇Vector或者CopyOnWriteArrayList
    • 是動態數組,相比於數組容量可實現動態增加。默認初始容量爲10,每次擴容爲原來的1.5倍
  • LinkedList特色:
    • 底層結構是鏈表,增刪速度快
    • 非線程安全
    • 是一個雙向循環鏈表,也能夠被看成堆棧、隊列或雙端隊列
    • 包含一個很是重要的內部類Entry,是雙向鏈表節點所對應的數據結構,其包括的屬性有『當前節點所包含的值』、『上一個節點』、『下一個節點』
  • Vector特色:
    • 底層結構是數組,可用索引實現快速查找
    • 使用了synchronized關鍵字,是線程安全的,比ArrayList開銷更大,訪問更慢
    • 默認初始容量爲10,默認每次擴容爲原來的2倍,可經過capacityIncrement屬性設置。

(3)Set系列:無序、不可重複

  • HashSet特色:
    • 不能保證元素的排列順序
    • 使用Hash算法來存儲集合中的元素,有良好的存取和查找性能
    • 非同步,多線程併發要注意線程同問題
    • 集合元素值可爲null
    • 經過equal()判斷兩個元素是否相等,並兩個元素的hashCode()返回值也相等
  • TreeSet特色:
    • 是SortedSet接口的實現類,根據元素實際值的大小進行排序
    • 採用紅黑樹的數據結構來存儲集合元素
    • 非同步
    • 支持兩種排序方法:天然排序(默認狀況)和定製排序。前者經過實現Comparable接口中的compareTo()比較兩個元素之間大小關係,而後按升序排列;後者經過實現Comparator接口中的compare()比較兩個元素之間大小關係,實現定製排列。

(4)Iterator接口

  • 用於遍歷Collection中的集合中的元素,又稱迭代器。自己並不提供盛裝對象的能力。
  • 必須依賴於Collection對象,獨立存在無心義。
  • 經常使用方法:判斷集合是否還有下一個元素hasNext(),可經過remove()刪除集合中上一次next()返回的集合元素。

(5)Map接口

  • 保存具備映射關係的數據。
  • Map集合中保存着兩組值,一組用於保存Map中的key,一組用於保存Map中的value。
    • key和value能夠是任何引用類型的數據。
    • key不容許重複,key沒有順序。能夠把key集合當作一個Set集合,它們的存儲形式、子類命名也很是類似。
    • value容許重複,value經過索引查找。能夠把value集合當作一個List集合。
  • 經常使用方法:成對添加put()和刪除remove()key-value對,獲取指定key的valueget()、判斷是否包含指定keycontainsKey()和指定valuecontainsValue()等。

(6)Map系列

  • HashMap特色:
    • 基於AbstractMap類,實現了Map、Cloneable(能被克隆)、Serializable(支持序列化)接口,
    • 無序
    • 非線程安全
    • 容許存在一個爲null的key和任意個爲null的value
    • 採用鏈表散列的數據結構,即數組和鏈表的結合
    • 初始容量爲16,填充因子默認爲0.75,擴容時是當前容量翻倍,即2capacity
  • LinkedHashMap特色:
    • 繼承自HashMap類
    • 有序,默認爲插入順序,還能夠是訪問順序
    • 非線程安全
    • 容許存在一個爲null的key和任意個爲null的value
    • 內部經過Entry維護了一個雙向鏈表,負責維護Map的迭代順序
  • Hashtable特色:
    • 基於Map接口和Dictionary類
    • 無序
    • 線程安全,開銷比HashMap大,若是多線程訪問一個Map對象,使用Hashtable更好
    • 不容許使用null做爲key和value
    • 底層基於哈希表結構
    • 初始容量爲11,填充因子默認爲0.75,擴容時是容量翻倍+1,即2capacity+1
  • TreeMap特色:
    • 是SortedMap接口的實現類
    • 有序,根據key對節點進行排序
    • 支持兩種排序方法:天然排序定製排序。前者全部key必須實現Comparable接口且全部key應該是一個類的對象;後者經過傳入一個Comparator接口對象負責對多有key進行排序。
    • 非線程安全
    • 採用紅黑樹的數據結構

3.一些小感悟

最近你們都進入了白熱化狀態,離項目上線的日子愈來愈近,重心也從需求開發到糾錯改Bug,每一個人都變得很謹慎。記得下班最晚的上週五,一大早拿到了測試用例文檔以後,要對照着用例的每一條每一個點,檢查要求是否合理、運行後實際結果是否無誤。一度覺得要週末加班要繼續搞(雖然我也一直是加班學習沒閒着...),好在團結力量大,在提測以前的deadline終於大功告成。

那天還有個小插曲,承包了一夜的笑點,就是可愛的田豐前輩,臨提測才發現頁面UI不對,就像熱鍋的螞蟻同樣七上八下,在調試的時候一度抓不上包,自亂陣腳覺得出了大bug,就在這時,旁邊的楊宇前輩很淡定的把數據線從他的電腦拔出來,場面能夠說很歡樂了。

自測以後,在測試用例評審會上見到了QA,以前聽聞公司QA是很嚴格的,不禁得肅然起敬。其實這和公司價值觀的其中一點『追求卓越』是分不開的,很是注重代碼質量,對線上事故也是嚴肅對待,員工入職的第一天就要研讀CaseStudy,看看以前事業羣研發曾犯過的錯以及開發紅線。

導師前陣子請了陪產假,他的開發部分也就由我接手了,這兩天組裏要進行代碼review,於我而言算是個大事,畢竟代碼不是本身寫的。思來想去,以爲用UML圖去刻畫類組成和邏輯實現流程最好不過了,忽然很是感激大三最後一門課程『信息系統分析與設計』讓我對UML愛不釋手!(畢竟以前總用PhotoShop...)雖然課上用的是Visio做圖,不過我的更推薦ProcessOn,交互設計上更勝一籌。

公司裏有這樣一句開發者的信仰流傳在民間,簡直振聾發聵,那就是『要麼牛逼,要麼滾蛋』,小菜鳥不由渾身顫抖,因此...共勉吧!

工做大樓
相關文章
相關標籤/搜索