CollectionUtils.isEmpty()
使用apache或者spring下的該工具類,可以簡(jiǎn)潔的判斷collection是否是null還是空:
if (CollectionUtils.isEmpty(list))
而不是使用
if (list != null && list.size() > 0)
List list = Arrays.asList("a","b");
該方式一般用于數(shù)組轉(zhuǎn)List,但如果需要對(duì)List進(jìn)行add操作則不能使用,因?yàn)樵摲绞椒祷氐氖茿rrays的內(nèi)部類java.util.Arrays.ArrayListt
而不是 java.util.ArrayList
碳想,不支持add/remove, 會(huì)拋出異常:
Exception in thread "main" java.lang.UnsupportedOperationException
StringBuilder
對(duì)于一個(gè)字符串如果需要多次賦值寇损,建議使用 StringBuilder
可以節(jié)省部分資源和提高性能彤委,例如下面的代碼反復(fù)對(duì) allNames
重新賦值铐尚,jvm會(huì)對(duì)每次賦值的結(jié)果創(chuàng)建一個(gè)新的String對(duì)象拨脉,造成資源的浪費(fèi):
String allNames = "";
for (String name : nameList) {
allNames += name + ";";
}
而對(duì)于下面這種只賦值一次的情況,使用 +
和 StringBuilder
是等價(jià)的塑径,因?yàn)樵摲绞皆诰幾g期就已經(jīng)被轉(zhuǎn)換為一個(gè)String對(duì)象,如果覺得該方式不夠優(yōu)雅填具,可以使用String.format("%s %s %s", "I", "like", "java")
代替:
String str = "a" + "b" + "c";
catch (IOException | NumberFormatException e)
對(duì)于不同的exception有同樣的處理方式统舀,可以使用該方法保持代碼的整潔:
try {
...
} catch (IOException | NumberFormatException e) {
log.error("Operation failed cause of exception:", e);
}
Boolean.TRUE.equals(obj)
使用該方式判斷裝箱對(duì)象匆骗,可以防止拋出 NullPointException
:
Boolean b = null;
if (b) { // this will throw NullPointException
...
}
StandardCharsets.UTF_8
使用該方式指定 char set 而不是用hard code "UTF-8"
String str = new String(bytes, StandardCharsets.UTF_8);
@Scheduled(zone="")
在配置zone的參數(shù)時(shí)只能使用GMT+/-的格式,或者使用ZoneID例如America/New_York誉简,可參考java文檔中的TimeZone: https://docs.oracle.com/javase/8/docs/api/index.html
@Scheduled(cron="", zone="America/New_York") // can not use +/-
@Scheduled(cron="", zone="GMT+0:00")
@Scheduled(cron="", zone="GMT-4:00")
如果直接使用 zone="EST+0:00"
或者 zone="CST+0:00"
啟動(dòng)會(huì)報(bào)錯(cuò):
Invalid time zone specification "EST+0:00"
IdentityHashMap
可以保存多個(gè)相同的key碉就,但是要求key的對(duì)象地址不一樣
Map<String, String> map = new IdentityHashMap()<>;
map.put("a", "aaa");
map.put("a", "bbb"); // 會(huì)覆蓋上一個(gè)key
map.put(new String("a"), "bbb"); //不會(huì)覆蓋