美團(tuán)實(shí)習(xí)| 周記(二)

本周知識清單:

  • 開發(fā)小tips
  • Java基礎(chǔ)之集合類
  • 一些小感悟

1.開發(fā)小tips

看項(xiàng)目代碼的時候發(fā)現(xiàn)了一些不起眼但覺得蠻實(shí)用的小tips熊楼,在實(shí)習(xí)隨筆|周記(一)寫的tools命名空間就是一點(diǎn)亿驾,可幫助快速預(yù)覽布局展示效果拴泌。接下來再提一些小技巧。

a .值得收藏的AS插件 乒融,另推薦可用Statistic插件統(tǒng)計(jì)項(xiàng)目代碼總行數(shù)啊易、Alibaba Java Coding Guidelines插件幫助規(guī)范代碼延欠。

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

c.TextView屬性大全偷厦,比如android:drawableXXX系列配合android:drawablePadding 適合在文字側(cè)放固定大小的圖片。

d.TextView/string.xml冷門小技巧:占位轉(zhuǎn)換符%1$s燕刻、%2$d等的用法只泼,其中%1$s表示第一個字符串、%2$d表示第二個整數(shù)酌儒。使用示例如下:

  • 在string.xml中先定義好格式:
<string name="instance">String.xml占位轉(zhuǎn)換符:我叫%1$s,今年%2$d歲了,身高%3$f厘米辜妓。</string>
  • 代碼實(shí)現(xiàn):
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);
  • 輸出結(jié)果:
String.xml占位轉(zhuǎn)換符:我叫minmin,今年21歲了,身高164.5厘米。

2.Java基礎(chǔ)之集合類

a.作用:負(fù)責(zé)保存和盛裝其他數(shù)據(jù)忌怎,又稱容器類籍滴。

  • 用于存儲數(shù)量不等的對象,并可實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)榴啸,如棧孽惰、隊(duì)列等
  • 用于保存具有映射關(guān)系的關(guān)聯(lián)數(shù)組

和數(shù)組的區(qū)別:

  • 數(shù)組元素可以是基本類型,也可以是對象
  • 集合元素只能是對象

b.體系結(jié)構(gòu):大致可分為Set鸥印、List勋功、Queue 和Map四種體系。

  • Set:代表無序库说、不可重復(fù)的集合
  • List:代表有序狂鞋、可重復(fù)的集合
  • Map:代表具有映射關(guān)系的集合
  • Queue:代表一種隊(duì)列集合
形象記憶

下圖給出Java集合類之間的關(guān)系。

c.篇幅有限潜的,主要介紹上圖中紅色標(biāo)注的幾個類/接口(需要了解源碼請點(diǎn)擊類名)骚揍。

(1)Collection接口

  • 是List、Set和Queue接口的父接口啰挪,該接口中定義的方法可操作以上三種集合信不。
  • 常用方法:添加對象add()、刪除對象remove()亡呵、清空容器clear()抽活、判斷容器是否為空isEmpty()等。

(2)List系列:有序锰什、可重復(fù)

  • ArrayList特點(diǎn):
    • 底層結(jié)構(gòu)是數(shù)組下硕,可用索引實(shí)現(xiàn)快速查找
    • 非線程安全丁逝,建議在單線程中才使用ArrayList,而在多線程中可以選擇Vector或者CopyOnWriteArrayList
    • 是動態(tài)數(shù)組卵牍,相比于數(shù)組容量可實(shí)現(xiàn)動態(tài)增長果港。默認(rèn)初始容量為10,每次擴(kuò)容為原來的1.5倍
  • LinkedList特點(diǎn):
    • 底層結(jié)構(gòu)是鏈表糊昙,增刪速度快
    • 非線程安全
    • 是一個雙向循環(huán)鏈表辛掠,也可以被當(dāng)作堆棧、隊(duì)列或雙端隊(duì)列
    • 包含一個非常重要的內(nèi)部類Entry释牺,是雙向鏈表節(jié)點(diǎn)所對應(yīng)的數(shù)據(jù)結(jié)構(gòu)萝衩,其包括的屬性有『當(dāng)前節(jié)點(diǎn)所包含的值』、『上一個節(jié)點(diǎn)』没咙、『下一個節(jié)點(diǎn)』
  • Vector特點(diǎn):
    • 底層結(jié)構(gòu)是數(shù)組猩谊,可用索引實(shí)現(xiàn)快速查找
    • 使用了synchronized關(guān)鍵字,是線程安全的祭刚,比ArrayList開銷更大牌捷,訪問更慢
    • 默認(rèn)初始容量為10,默認(rèn)每次擴(kuò)容為原來的2倍涡驮,可通過capacityIncrement屬性設(shè)置暗甥。

(3)Set系列:無序、不可重復(fù)

  • HashSet特點(diǎn):
    • 不能保證元素的排列順序
    • 使用Hash算法來存儲集合中的元素捉捅,有良好的存取和查找性能
    • 非同步撤防,多線程并發(fā)要注意線程同問題
    • 集合元素值可為null
    • 通過equal()判斷兩個元素是否相等,并兩個元素的hashCode()返回值也相等
  • TreeSet特點(diǎn):
    • 是SortedSet接口的實(shí)現(xiàn)類棒口,根據(jù)元素實(shí)際值的大小進(jìn)行排序
    • 采用紅黑樹的數(shù)據(jù)結(jié)構(gòu)來存儲集合元素
    • 非同步
    • 支持兩種排序方法:自然排序(默認(rèn)情況)和定制排序寄月。前者通過實(shí)現(xiàn)Comparable接口中的compareTo()比較兩個元素之間大小關(guān)系,然后按升序排列无牵;后者通過實(shí)現(xiàn)Comparator接口中的compare()比較兩個元素之間大小關(guān)系漾肮,實(shí)現(xiàn)定制排列。

(4)Iterator接口

  • 用于遍歷Collection中的集合中的元素茎毁,又稱迭代器克懊。本身并不提供盛裝對象的能力。
  • 必須依賴于Collection對象充岛,獨(dú)立存在無意義保檐。
  • 常用方法:判斷集合是否還有下一個元素hasNext()耕蝉,可通過remove()刪除集合中上一次next()返回的集合元素崔梗。

(5)Map接口

  • 保存具有映射關(guān)系的數(shù)據(jù)。
  • Map集合中保存著兩組值垒在,一組用于保存Map中的key蒜魄,一組用于保存Map中的value扔亥。
    • key和value可以是任何引用類型的數(shù)據(jù)。
    • key不允許重復(fù)谈为,key沒有順序旅挤。可以把key集合看成一個Set集合伞鲫,它們的存儲形式粘茄、子類命名也非常相似。
    • value允許重復(fù)秕脓,value通過索引查找柒瓣。可以把value集合看成一個List集合吠架。
  • 常用方法:成對添加put()和刪除remove()key-value對芙贫,獲取指定key的valueget()、判斷是否包含指定keycontainsKey()和指定valuecontainsValue()等傍药。

(6)Map系列

  • HashMap特點(diǎn):
    • 基于AbstractMap類磺平,實(shí)現(xiàn)了Map、Cloneable(能被克鹿樟伞)拣挪、Serializable(支持序列化)接口,
    • 無序
    • 非線程安全
    • 允許存在一個為null的key和任意個為null的value
    • 采用鏈表散列的數(shù)據(jù)結(jié)構(gòu)薛训,即數(shù)組和鏈表的結(jié)合
    • 初始容量為16媒吗,填充因子默認(rèn)為0.75,擴(kuò)容時是當(dāng)前容量翻倍乙埃,即2capacity


      HashMap與HashSet對比
  • LinkedHashMap特點(diǎn):
    • 繼承自HashMap類
    • 有序闸英,默認(rèn)為插入順序,還可以是訪問順序
    • 非線程安全
    • 允許存在一個為null的key和任意個為null的value
    • 內(nèi)部通過Entry維護(hù)了一個雙向鏈表介袜,負(fù)責(zé)維護(hù)Map的迭代順序
  • Hashtable特點(diǎn):
    • 基于Map接口和Dictionary類
    • 無序
    • 線程安全甫何,開銷比HashMap大,如果多線程訪問一個Map對象遇伞,使用Hashtable更好
    • 不允許使用null作為key和value
    • 底層基于哈希表結(jié)構(gòu)
    • 初始容量為11辙喂,填充因子默認(rèn)為0.75,擴(kuò)容時是容量翻倍+1鸠珠,即2capacity+1
  • TreeMap特點(diǎn):
    • 是SortedMap接口的實(shí)現(xiàn)類
    • 有序巍耗,根據(jù)key對節(jié)點(diǎn)進(jìn)行排序
    • 支持兩種排序方法:自然排序定制排序。前者所有key必須實(shí)現(xiàn)Comparable接口且所有key應(yīng)該是一個類的對象渐排;后者通過傳入一個Comparator接口對象負(fù)責(zé)對多有key進(jìn)行排序炬太。
    • 非線程安全
    • 采用紅黑樹的數(shù)據(jù)結(jié)構(gòu)

推薦閱讀:Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析


3.一些小感悟

最近大家都進(jìn)入了白熱化狀態(tài),離項(xiàng)目上線的日子越來越近驯耻,重心也從需求開發(fā)到糾錯改Bug亲族,每個人都變得很謹(jǐn)慎炒考。記得下班最晚的上周五,一大早拿到了測試用例文檔之后霎迫,要對照著用例的每一條每個點(diǎn)斋枢,檢查要求是否合理、運(yùn)行后實(shí)際結(jié)果是否無誤知给。一度以為要周末加班要繼續(xù)搞(雖然我也一直是加班學(xué)習(xí)沒閑著...)瓤帚,好在團(tuán)結(jié)力量大,在提測之前的deadline終于大功告成涩赢。

那天還有個小插曲缘滥,承包了一晚上的笑點(diǎn),就是可愛的田豐前輩谒主,臨提測才發(fā)現(xiàn)頁面UI不對朝扼,就像熱鍋的螞蟻一樣七上八下,在調(diào)試的時候一度抓不上包霎肯,自亂陣腳以為出了大bug擎颖,就在這時,旁邊的楊宇前輩很淡定的把數(shù)據(jù)線從他的電腦拔出來观游,場面可以說很歡樂了搂捧。

自測之后,在測試用例評審會上見到了QA懂缕,之前聽聞公司QA是很嚴(yán)格的允跑,不由得肅然起敬。其實(shí)這和公司價(jià)值觀的其中一點(diǎn)『追求卓越』是分不開的搪柑,非常注重代碼質(zhì)量聋丝,對線上事故也是嚴(yán)肅對待,員工入職的第一天就要研讀CaseStudy工碾,看看之前事業(yè)群研發(fā)曾犯過的錯以及開發(fā)紅線弱睦。

導(dǎo)師前陣子請了陪產(chǎn)假,他的開發(fā)部分也就由我接手了渊额,這兩天組里要進(jìn)行代碼review况木,于我而言算是個大事,畢竟代碼不是自己寫的旬迹。思來想去火惊,覺得用UML圖去刻畫類組成和邏輯實(shí)現(xiàn)流程最好不過了,突然非常感激大三最后一門課程『信息系統(tǒng)分析與設(shè)計(jì)』讓我對UML愛不釋手1伎选(畢竟之前總用PhotoShop...)雖然課上用的是Visio作圖屹耐,不過個人更推薦ProcessOn,交互設(shè)計(jì)上更勝一籌宴倍。

公司里有這樣一句開發(fā)者的信仰流傳在民間张症,簡直振聾發(fā)聵,那就是『要么牛逼鸵贬,要么滾蛋』俗他,小菜鳥不禁渾身顫抖,所以...共勉吧阔逼!

隨手一拍的工作大樓
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兆衅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嗜浮,更是在濱河造成了極大的恐慌羡亩,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件危融,死亡現(xiàn)場離奇詭異畏铆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)吉殃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門辞居,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛋勺,你說我怎么就攤上這事瓦灶。” “怎么了抱完?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵贼陶,是天一觀的道長。 經(jīng)常有香客問我巧娱,道長碉怔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任禁添,我火速辦了婚禮眨层,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘上荡。我一直安慰自己趴樱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布酪捡。 她就那樣靜靜地躺著叁征,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逛薇。 梳的紋絲不亂的頭發(fā)上捺疼,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機(jī)與錄音永罚,去河邊找鬼啤呼。 笑死卧秘,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的官扣。 我是一名探鬼主播翅敌,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惕蹄!你這毒婦竟也來了蚯涮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤卖陵,失蹤者是張志新(化名)和其女友劉穎遭顶,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泪蔫,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡棒旗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了撩荣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗦哆。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖婿滓,靈堂內(nèi)的尸體忽然破棺而出老速,到底是詐尸還是另有隱情,我是刑警寧澤凸主,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布橘券,位于F島的核電站,受9級特大地震影響卿吐,放射性物質(zhì)發(fā)生泄漏旁舰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一嗡官、第九天 我趴在偏房一處隱蔽的房頂上張望箭窜。 院中可真熱鬧,春花似錦衍腥、人聲如沸磺樱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竹捉。三九已至,卻和暖如春尚骄,著一層夾襖步出監(jiān)牢的瞬間块差,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留憨闰,地道東北人状蜗。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像鹉动,于是被迫代替她去往敵國和親轧坎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容