你應該更新的Java知識之常用程序庫(一)

      在很多人眼中,Java已經是一門垂垂老矣的語言,但并不妨礙Java世界依然在前進。如果你曾離開Java,云游于其它世界,或是每日只在遺留代碼中掙扎,或許是時候抬起頭,看看老Java中的新東西。

      Guava

      一句話,只要你做Java項目,就應該用Guava

      guavaGoogle出品的一套Java核心庫,在我看來,它甚至應該是JDK的一部分。作為一個Java程序員,如果你沒抱怨過JDK的設計,只能說明一點,你寫得程序還是太少。正是JDK設計不彰,才有了一些項目來補充JDK的不足。如果說老Java程序員應該聽說過Apache Commons Lang,那新Java程序員該知道的就是Guava了。

      Java程序員更多的是知道Google Collections,不妨到它的主頁上走一遭,你會看到這個庫已經改名為Guava。事實上,Guava并不直接等于Google CollectionsGuava是一個超集。Guava實在太強大了,要想展現(xiàn)它的強大,需要專門的介紹,這里就不展開了。

      下面以一個統(tǒng)計單詞出現(xiàn)個數(shù)的小程序作為這個段落的結尾,雖然無法與許多其它語言的實現(xiàn)相提并論,但作為一個Java程序員,你不妨想一下按照傳統(tǒng)方式,這段代碼應該是什么樣子。

      String content = Files.toString(new File(args[0]), Charset.defaultCharset());

      Iterable texts = Splitter.on(CharMatcher.WHITESPACE)

      .omitEmptyStrings()

      .trimResults()

      .split(content);

      Multiset collection = HashMultiset.create(texts);

      Joda Time

      你覺得一個API設計得差到什么份上,才會把自己差不多的API全部Deprecated掉。java.util.Date便是這樣的奇葩。因為它的API幾乎都是反直覺的,幾乎所有敢于用它的Java程序員都吃過它的虧。想初始化個2013年的第一天,還真不那么容易:

      Date firstDayOf2013 = new Date(113, 0, 1);

      如果你是個Java新手,你能猜出113是從哪來的嗎?(好吧,它是2013-1900,至于為什么是1900,這真得問API的設計者了)。

      Joda Time就是人們實在無法忍受這樣東西的產物。同樣的代碼用Joda Time實現(xiàn):

      DateTime firstDayOf2013 = new DateTime().withDate(2013, 1, 1);

      無論如何,你知道這能看出這些參數(shù)的含義了。不只如此,你還可以計算兩天后是什么日子:

      firstDate.plusDays(2);

      日期格式化,也是JDK Date系列API里一大特色,你必須把代碼寫成下面這樣:

      new SimpleDateFormat("yyyy.MM.dd").format(firstDayOf2013)

      作為一個初始化很慢的構造函數(shù),你還必須每次調用,因為它不是線程安全的。同樣的代碼,在Joda Time里,我們可以用DateTimeFormatter

      DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy.MM.dd");

      ...

      formatter.print(dateTime);

      請盡管放心大膽把formatter聲明成一個字段,因為它是線程安全的。

      當然,Joda Time的強大遠不止于此。當然,JDK也并不是那么完全的自暴自棄,于是,有了一個JSR 310專門設計新的Date APIJSR 310spec leadSteven Colebourne,此人正是Joda Time的作者。

      北大青鳥網(wǎng)上報名
      北大青鳥招生簡章
      主站蜘蛛池模板: 国产在线一区观看| 日本精品高清一区二区| 无码国产精品一区二区高潮| 亚洲AV成人一区二区三区在线看| 无码人妻久久久一区二区三区 | 精品国产一区二区三区香蕉事| 中文字幕一区二区三区在线观看 | 亚洲av成人一区二区三区在线播放| 亚洲欧洲日韩国产一区二区三区| 成人h动漫精品一区二区无码| 免费视频精品一区二区| 国产探花在线精品一区二区| 国产精品久久久久久麻豆一区 | 激情啪啪精品一区二区| 国产一区二区三区在线视頻 | 色窝窝免费一区二区三区| 四虎永久在线精品免费一区二区| 国产亚洲一区二区手机在线观看| 国产福利一区二区三区在线视频 | 久久久综合亚洲色一区二区三区 | 国产激情一区二区三区四区 | 亚洲一区在线观看视频| 日韩精品一区二区三区在线观看 | 影音先锋中文无码一区| 麻豆一区二区三区蜜桃免费| 亚洲天堂一区二区| 一区二区三区在线播放视频| 久久无码人妻一区二区三区午夜| 国产成人一区二区三区高清| 国产激情无码一区二区| 国产精品伦子一区二区三区| 国产一区二区在线看| 国产伦精品一区二区三区在线观看| 国产精品视频一区二区噜噜| 夜色阁亚洲一区二区三区| 精品深夜AV无码一区二区老年| 一区二区三区影院| 精品一区二区三区四区电影| 精品无码一区二区三区在线 | 日韩精品一区二区三区中文| 亚洲福利精品一区二区三区|