StringUtils,CollectionUtils判斷為空的方法和原生代碼哪個(gè)效率最高
StringUtils,CollectionUtils判斷為空的方法和原生代碼哪個(gè)效率高
之前一直疑惑,封裝類的方法和直接寫代碼(字符串或者集合否為空)判斷哪個(gè)效率高,但是最近自己才測(cè)試
結(jié)論
自己直接寫判斷效率高(一般是0ms),但是封裝的簡(jiǎn)便、嚴(yán)謹(jǐn)(一般10ms以內(nèi))
- 函數(shù)
StringUtils.isNotBlank(testString)
的功能與StringUtils.isBlank(testString)
相反 - 函數(shù)
StringUtils.isNotEmpty(testString)
的功能與StringUtils.isEmpty(testString)
相反
isBlank與isEmpty區(qū)別
如果字符串是String str = " ";//或者是str = " ";
所以如果判斷為空的話 最好用
StringUtils.isBlank(str) 或者 str!=null && !"".equals(str.trim())
CollectionUtils封裝類,判斷為空的方法
List list = new ArrayList(); CollectionUtils.isEmpty(list); Map map = new HashMap(); CollectionUtils.isEmpty(map);
源碼:
public static boolean isEmpty(Collection<?> collection) { ? ? return collection == null || collection.isEmpty(); } public static boolean isEmpty(Map<?, ?> map) { ? ? return map == null || map.isEmpty(); } /** ?* Returns <tt>true</tt> if this list contains no elements. ?* ?* @return <tt>true</tt> if this list contains no elements ?*/ public boolean isEmpty() { ? ? return size == 0; } /** ?* Returns <tt>true</tt> if this map contains no key-value mappings. ?* ?* @return <tt>true</tt> if this map contains no key-value mappings ?*/ public boolean isEmpty() { ? ? return size == 0; }
針對(duì)以上方法,本人認(rèn)為字符串判斷是否為空用StringUtils.isBlank(str );
對(duì)集合判斷還是用原生代碼list != null && list.size>0
StringUtils、CollectionUtils工具類的常用方法
下面將為大家演示StringUtils、CollectionUtils工具類的常用方法。
一、CollectionUtils工具類
作用:常用于判斷集合中是否有元素、是否為空等
?★★★ 例1 : 判斷集合是否為空: ?CollectionUtils.isEmpty(null); //控制臺(tái)打?。簍rue ?CollectionUtils.isEmpty(new ArrayList());//控制臺(tái)打?。簍rue ?CollectionUtils.isEmpty({a,b});//控制臺(tái)打?。篺alse ? ?★★★ 例2: 判斷集合是否不為空: ?CollectionUtils.isNotEmpty(null); //控制臺(tái)打?。篺alse ?CollectionUtils.isNotEmpty(new ArrayList()); //控制臺(tái)打印:false ?CollectionUtils.isNotEmpty({a,b}); //控制臺(tái)打?。簍rue
1、工作案例
1.1、數(shù)據(jù)庫(kù)用戶實(shí)體
?public class User implements Serializable { ? ? ?private Long ? ? ?id; ? ? ? ?//用戶ID ? ? ?private String ? ?name; ? ? ?//用戶姓名 ? ? ?private Integer ? ?age; ? ? ?//用戶年齡 ? ? ?....... } ? ?
1.2、Mapper
?/** ?* ?小編(程序牛CodeCow)用的是注解方式寫sql,也可以用XML方式寫sql,看個(gè)人愛好 ?*/ @Select("<script> " + ? ? ? ? ? ? ? "select * from User " + ? ? ? ? "</script>") List<User> getUserList();//獲取所有用戶
1.3、測(cè)試
@Autowired private UserMapper userMapper; List<User> list = userMapper.getUserList();//調(diào)用Mapper方法,獲取所有用戶 if(CollectionUtils.isEmpty(list )){ //使用CollectionUtils工具判斷是否為空 ? ? //此處進(jìn)行為空的業(yè)務(wù)邏輯操作 }else{ ? ? //此處進(jìn)行不為空的業(yè)務(wù)邏輯操作 }
二、StringUtils工具類
1、作用:常用于判斷字符串是否為空、" "、null等
★★★ 例1:<isEmpty>判斷某字符串是否為空(為空標(biāo)準(zhǔn):字符串為null或字符串長(zhǎng)度為0) ? ? ? ? StringUtils.isEmpty(null); //控制臺(tái)打?。簍rue ? ? ? ? StringUtils.isEmpty("") ; ?//控制臺(tái)打?。簍rue ? ? ? ? StringUtils.isEmpty(" "); ?//控制臺(tái)打?。篺alse (空格在StringUtils中作非空處理) ? ? ? ? StringUtils.isEmpty("程序牛CodeCow") //控制臺(tái)打印:false ? ★★★ 例2:<isNotEmpty>判斷某字符串是不為空(和例1相反) ? ? ? ? StringUtils.isNotEmpty(null); //控制臺(tái)打?。篺alse ? ? ? ? StringUtils.isNotEmpty(""); ? //控制臺(tái)打?。篺alse ? ? ? ? StringUtils.isNotEmpty(" "); ?//控制臺(tái)打印:true? ? ? ? ? StringUtils.isNotEmpty("程序牛CodeCow"); //控制臺(tái)打?。簍rue ? ★★★ 例3:<isBlank>判斷某字符串是否為空 ? ? ? ? StringUtils.isBlank(null); ? //控制臺(tái)打?。簍rue ? ? ? ? StringUtils.isBlank(""); ? ? //控制臺(tái)打?。?true ? ? ? ? StringUtils.isBlank(" "); ? ?//控制臺(tái)打?。簍rue ? ? ? ? StringUtils.isBlank("程序牛CodeCow")//控制臺(tái)打印:false ? ★★★ 例4:<isNotBlank>判斷某字符串是不為空(和例3相反) ? ? ? ? StringUtils.isNotBlank(null);//控制臺(tái)打?。篺alse ? ? ? ? StringUtils.isNotBlank(""); ?//控制臺(tái)打印:false ? ? ? ? StringUtils.isNotBlank(" "); //控制臺(tái)打?。篺alse ? ? ? ? StringUtils.isBlank("程序牛CodeCow")//控制臺(tái)打?。簍rue ? ? ? ☆☆☆☆☆ isEmpty、isBlank 都是判斷字符串是否為空,他兩有什么區(qū)別 ??? ? ? ? ? ? ? ? ?朋友記住一點(diǎn)就行:isBlank 可以說更加嚴(yán)格,比如: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? isBlank(" ?") isBlank 說我TM就說它 "為空" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? isEmpty(" ?") isEmpty 說我TM就說它 "不為空" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? "朋友你懂了嗎^__^"
2、工作案例
2.1、首先導(dǎo)包
?//導(dǎo)入commons包;小編(程序牛CodeCow)用的是 lang3,推薦 ?<dependency> ? ? ?<groupId>org.apache.commons</groupId> ? ? ?<artifactId>commons-lang3</artifactId> ? ? ?<version>3.9</version> ?</dependency>
2.2、測(cè)試
1 "測(cè)試小編(程序牛CodeCow)就 不多 BB 了, 仔細(xì)看了上面的 應(yīng)該都會(huì)了吧 ^__^ "
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JDK常用命令jps jinfo jstat的具體說明與示例
JDK本身提供了很多方便的JVM性能調(diào)優(yōu)監(jiān)控工具,除了集成式的VisualVM和jConsole外,還有jps、jinfo、jstat等小巧的工具,本文章希望能起拋磚引玉之用,讓大家能開始對(duì)JVM性能調(diào)優(yōu)的常用工具有所了解2021-09-09解析Java和Eclipse中加載本地庫(kù)(.dll文件)的詳細(xì)說明
本篇文章是對(duì)Java和Eclipse中加載本地庫(kù)(.dll文件)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05IDEA+Maven搭建JavaWeb項(xiàng)目的方法步驟
本文主要介紹了IDEA+Maven搭建JavaWeb項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11Java中Comparable與Comparator的區(qū)別解析
這篇文章主要介紹了Java中Comparable與Comparator的區(qū)別解析,實(shí)現(xiàn)Comparable接口,重寫compareTo方法,一般在實(shí)體類定義的時(shí)候就可以選擇實(shí)現(xiàn)該接口,提供一個(gè)默認(rèn)的排序方式,供Arrays.sort和Collections.sort使用,需要的朋友可以參考下2024-01-01利用SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源的兩種方式總結(jié)
關(guān)于動(dòng)態(tài)數(shù)據(jù)源的切換的方案有很多,核心只有兩種,一種是構(gòu)建多套環(huán)境,另一種是基于spring原生的AbstractRoutingDataSource切換,這篇文章主要給大家介紹了關(guān)于利用SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源的兩種方式,需要的朋友可以參考下2021-10-10