JDK1.8新特性總結

之前的實習的過程中,一位有着非常豐富經驗的CTO曾對我說過,代碼的質量,要不斷的去提升。從剛開始的CRUD,到具體的業務流程實現,在這個過程中要不斷的提煉代碼。把一些冗餘的代碼,變得精煉,精煉,再精煉。

我雖然理解他的意思,但是,還不是很明白使用何種方式,達到這種效果。

最近也面試了許多家,他們常會以這樣的一個問題來問我。

Q1:你常使用的jdk版本是多少? 
1.8
Q2:你知道jdk8 的新特性嗎?
??????我蒙了,這玩意還有這操作,有什麼用?

但是當我瞭解完後我才知道,原來這就是代碼提煉的實現方式之一。廢話過多了,正文走起~~~

==============================================

JDK簡介

參考博客地址https://www.cnblogs.com/linuxws/p/10029875.html
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述

java版本特性

在這裏插入圖片描述在這裏插入圖片描述

我這裏主要分析1.8,把我日常工作中接觸到的說明一下,後續在補充

Stream API

  • 模擬效果圖:
    ![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200426100755510.png

我們在現實的工作中是否會常常遇到這樣的需求:把一個用戶集合中所有的用戶身份id,放入另一個集合中。

使用java8的特性即可實現。

List<String> idcards= users.stream().map(User::getIdcard).collect(Collectors.toList())

反觀我們日常方法

List<String> idcards=new ArrayList<String>();//定義一個集合來裝身份證號碼

for(int i=0;i<users.size();i++){

  idcards.add(users.get(i).getIdcard());

}
  • 參數說明:
  	 users:一個實體類的集合,類型爲List<User>
	 User:實體類
	 getIdcard:實體類中的get方法,爲獲取User的idcard

實現了代碼的高度提煉。

stream()優點

  • 無存儲

    • stream不是一種數據結構,它只是某種數據源的一個視圖,數據源可以是一個數組,Java容器或I/O channel等。
    • 爲函數式編程而生。對stream的任何修改都不會修改背後的數據源,比如對stream執行過濾操作並不會刪除被過濾的元素,而是會產生一個不包含被過濾元素的新stream。
  • 惰式執行。

    • stream上的操作並不會立即執行,只有等到用戶真正需要結果的時候纔會執行。
  • 可消費性。

    • stream只能被“消費”一次,一旦遍歷過就會失效,就像容器的迭代器那樣,想要再次遍歷必須重新生成。

待續~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章