小言_互联网的博客

字符串、集合如何判断空值?看看成年人的正确操作

251人阅读  评论(0)

在平时的开发中,基本上都会用到字符串判断空值和集合判断空值的处理,还记得在刚干开发的时候,写的代码在现在看起来是真的有点Hello World,那么这次分享两个非常常用的方法,字符串非空判断和集合非空判断

字符串非空判断

你有没见过下面的代码,要是没见过你就不配是一个程序员,我还写过呢!现在回过头来看感觉自己当年真的是太年轻了。


   
  1. public static void main(String[] args) {
  2. String str = "bingfeng";
  3. if (str == null || str. equals( "")) {
  4. }
  5. }

那么经历同事的各种嫌弃之后,现在终于不这么写了,要是现在看到那个初级工程师这么写,肯定叫兄弟过去欺负他。

除了这种写法之外,也见到过有些人愿意自己去实现封装一层,写一个工具类用,其实真的感觉没必要,切莫重复早轮子。这种东西别人已经帮我们做好了,而且也比我们这些菜鸟做的好多了,所以推荐直接用就行了。

我们直接引入pom文件即可,他给我们提供了一些基础的功能供我们使用。


   
  1. <dependency>
  2. <groupId>org.apache.commons </groupId>
  3. <artifactId>commons-lang3 </artifactId>
  4. <version>3.9 </version>
  5. </dependency>

首先第一种,isNotEmpty 这个方法可以判断字符串是否为空。第二种,isNotBlank 这个方法也是用来判断字符串是否为空。


   
  1. public static void main(String[] args) {
  2. String str = "bingfeng";
  3. if (StringUtils.isNotBlank(str)) {
  4. System. out.println( "isNotBlank:" + str);
  5. }
  6. if (StringUtils.isNotEmpty(str)) {
  7. System. out.println( "isNotEmpty:" + str);
  8. }
  9. }

既然上面两种方法都可以判断时候为空,那又有什么区别呢?首先两个方法都可以判断字符串是否为null,但是我们平常在业务中,特别是用户搜索,用户很可能输入空白字符,如果用户什么也没输入,就敲了两个空格,那么提交到后台,按道理来说空字符串肯定是不合法的,那么此时的isNotEmpty是无法判断的,相反isNotBlank却可以在去除字符串两边的空格然后再进行判断,所以这里推荐大家使用 isNotBlank 更为安全。

集合空值判断

再来看一段当年的传奇之作


   
  1. public static void main(String[] args) {
  2. List<String> list = new ArrayList<>();
  3. if ( list == null || list.size() <= 0) {
  4. }
  5. }

一般对集合都要进行两项判断,首先判断是否不为null,其次判断是否不为空,如果都满足,再进行下面的操作,我们用上面的写法虽说没什么问题,但是真的有点太年轻了。

推荐写法:


   
  1. public static void main(String[] args) {
  2. List<String> list = new ArrayList<>();
  3. if (CollectionUtils.isEmpty( list)) {
  4. }
  5. }

我们来看下这个方法的底层实现,便会长大许多。


   
  1. public static boolean isEmpty(@Nullable Collection<?> collection) {
  2. return collection == null || collection.isEmpty();
  3. }

写到这里,基本上就差不多啦,但是还是透露一下我常用的秘籍,我一般都会对判断集合的方式,做一层包装做成一个工具类,提供更多的方法提高代码的复用性。大家且看下面。


   
  1. /**
  2. * @Description: TODO <集合工具类>
  3. * @Date: 2019/10/15/015 09:32
  4. * @Author: bingfeng
  5. */
  6. public class ArrayUtil {
  7. /**
  8. * 判断集合是否为空
  9. *
  10. * @param collection
  11. * @return
  12. */
  13. public static boolean isEmpty(Collection <?> collection) {
  14. return CollectionUtils.isEmpty(collection);
  15. }
  16. /**
  17. * 将集合中的元素输出为字符串,并用{@code separator}连接
  18. *
  19. * @param collection
  20. * @param separator
  21. * @return
  22. */
  23. public static String join(Collection <?> collection, String separator) {
  24. if (isEmpty(collection)) {
  25. return null;
  26. }
  27. StringBuffer sb = new StringBuffer();
  28. for (Object o : collection) {
  29. sb.append(o).append(separator);
  30. }
  31. sb.deleteCharAt(sb.length() - 1);
  32. return sb.toString();
  33. }
  34. /**
  35. * 创建一个空的集合
  36. *
  37. * @return
  38. */
  39. public static <T> List<T> emptyList() {
  40. return Collections.emptyList();
  41. }
  42. /**
  43. * 将字符串按特定字符分割
  44. *
  45. * @param str
  46. * @param separator
  47. * @return
  48. */
  49. public static List<String> transition(String str, String separator) {
  50. if (StringUtils.isBlank(str)) {
  51. return emptyList();
  52. }
  53. String[] split = str.split(separator);
  54. return Arrays.asList(split);
  55. }
  56. }

道阻且长,就让我们恩恩爱爱,活得潇潇洒洒吧。。。

推荐阅读

SpringBoot多数据源中的分布式事务

强烈推荐,IDEA开发必备的4款插件(文末送书)

SpringBoot整合easyexcel实现Excel的导出


转载:https://blog.csdn.net/weixin_37158722/article/details/103884282
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场