隨着2019年9月17日Java13正式發佈,不少夥伴們都震驚了,手裏用的仍是個位數版本的,官方咋都幹到13了,不過也沒必要太着急,畢竟最近的兩個長期支持版本是8和11,手持Java8的夥伴表示還能再戰三年!java
可是身邊的程序員老王雖然手持Java8,寫的仍是7的代碼,記憶中幾個經典的業務場景代碼,已經烙印在腦海裏了,其實你們早就不這麼寫了喂,讓咱們舉幾個例子:程序員
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < bizList.size(); i++) {
strBuilder.append(bizList.get(i));
if (i != bizList.size() - 1) {
strBuilder.append(",");
}
}
System.out.println(strBuilder.toString());
// v,t,1,2,3,4
複製代碼
其實如今都是這樣的sql
StringJoiner sj = new StringJoiner(",");
bizList.forEach(sj::add);
System.out.println(sj.toString());
// v,t,1,2,3,4
複製代碼
或者這樣的數組
String result = bizList.stream().collect(Collectors.joining(","));
System.out.println(result);
// v,t,1,2,3,4
複製代碼
甚至直接這樣的bash
String result = String.join(",", bizList);
System.out.println(result);
// v,t,1,2,3,4
複製代碼
new Thread() {
@Override
public void run() {
System.out.println("New Thread");
}
}.start();
複製代碼
其實如今都是這樣的:app
Runnable task = () -> System.out.println("New Thread");
new Thread(task).start();
複製代碼
或者這樣的:ide
public static void main(String[] args) {
new Thread(new CommonTest()::task).start();
}
public void task() {
System.out.println("New Thread");
}
複製代碼
int[] intArr = {1, 5, 9, 6, 4, 5, 1, 5, 6, 9, 10, 1, 5};
Map<Integer, Integer> bizMap = new HashMap<>();
for (int i = 0; i < intArr.length; i++) {
int item = intArr[i];
// contains key : + 1
if (bizMap.containsKey(item)) {
bizMap.put(item, bizMap.get(item) + 1);
} else { // default 1
bizMap.put(item, 1);
}
}
for (Map.Entry<Integer, Integer> bizMapEntry : bizMap.entrySet()) {
System.out.print("[" + bizMapEntry.getKey() + " => " + bizMapEntry.getValue() + "]");
}
//[1 => 3][4 => 1][5 => 4][6 => 2][9 => 2][10 => 1]
複製代碼
其實如今都是這樣的:ui
public static void main(String[] args) {
int[] intArr = {1, 5, 9, 6, 4, 5, 1, 5, 6, 9, 10, 1, 5};
Map<Integer, Integer> bizMap = new HashMap<>();
for (int i = 0; i < intArr.length; i++) {
bizMap.compute(intArr[i], CommonTest::count);
}
bizMap.forEach((k, v) -> System.out.print("[" + k + " => " + v + "]"));
//[1 => 3][4 => 1][5 => 4][6 => 2][9 => 2][10 => 1]
}
public static Integer count(Integer key, Integer val) {
return val == null ? 1 : val + 1;
}
複製代碼
甚至是這樣的:spa
int[] intArr = {1, 5, 9, 6, 4, 5, 1, 5, 6, 9, 10, 1, 5};
// vt tips : 別忘了裝箱boxed() 一下
Map<Integer, Integer> bizMap = Arrays.stream(intArr).boxed()
.collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(i -> 1)));
bizMap.forEach((k, v) -> System.out.print("[" + k + " => " + v + "]"));
//[1 => 3][4 => 1][5 => 4][6 => 2][9 => 2][10 => 1]
複製代碼
if (objA != null) {
ObjB objB = objA.getObjB();
if (objB != null) {
ObjC objC = objB.getObjC();
if (objC != null) {
return objC.getResult() == null ? "" : objC.getResult();
}
}
}
複製代碼
其實如今都是這樣的:線程
String result = Optional.ofNullable(objA).map(ObjA::getObjB).map(ObjB::getObjC)
.map(ObjC::getResult).orElse(EMPTY);
return result;
複製代碼
Thread.sleep(24 * 60 * 60 * 1000);
Date result = new Date();
複製代碼
Date currDate = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(currDate);
cal.add(Calendar.DATE, 1);
Date result = cal.getTime();
複製代碼
可是如今已經能夠這樣:
LocalDate result = LocalDate.now().plusDays(1);
java.util.Date utilsPackageDate = java.sql.Date.valueOf(result);
複製代碼
暫時先舉這幾個經常使用的例子,下面咱們能夠討論一下,老王這樣寫代碼,有錯嗎? 我認爲並無錯,運行穩定,代碼規範,就是好代碼,就算你寫出花了,別人看不懂,難以維護也是不可取的。
不過做爲一名合格的程序員,時常更新一下技術儲備,寫下代碼以前,思考一下要寫的代碼的「Best Practice」是怎樣的,也是一門必修課程呀。
走過路過別錯過~ 點個贊再走吧~