List和String的非空判断
1、如果想判断list是否为空,可以这么判断:
if(null == list || list.size() ==0 ){
//为空的情况
}else{
//不为空的情况
} 2、list.isEmpty() 和 list.size()==0 有啥区别呢
答案:没有区别 。
isEmpty()判断有没有元素,而size()返回有几个元素;
如果判断一个集合有无元素 建议用isEmpty()方法.比较符合逻辑用法。 3、list!=null 跟 ! list.isEmpty()有什么区别?
比如:书店和数
list!=null 首先判断【书店】是否存在?
!list.isEmpty() 不判断【书店】是否存在,而是判断【书店】是否有书? 所以,一般的list非空判断是:
if(list!=null && !list.isEmpty()){
//不为空的情况
}else{
//为空的情况
}
————————————————
版权声明:本文为CSDN博主「maocxu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fk_d_st/article/details/79084850
String str = " ";
//第一种错误情况
if (!"".equals(str) || str != null) { } //第二种错误情况
if (str != null || !"".equals(str)) { } //第三种错误情况
if (str != null || str.length() != 0) { } 很多人都出现了上面3种情况的一种
第一种错误是最低级的,如果str = null,那么程序将会报空指针 第二种和第三种情况虽然不会报错,但是无法做到准确校验空字符串,如果字符串本身就是一串空格,将不会被拦截到 比较成熟的写法如下: if (str != null || !"".equals(str.trim())) {
//则字符串不为空或空格
}StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是
null
安全的(即如果输入参数 String 为
null
则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为
null
则返回也是
null
等,具体可以查看源代码)。
除了构造器,StringUtils 中一共有
130
多个方法,并且都是
static
的,所以我们可以这样调用 StringUtils.xxx()
下面分别对一些常用方法做简要介绍:
1
.
public
static
boolean
isEmpty(String str)
判断某字符串是否为空,为空的标准是 str==
null
或 str.length()==
0
下面是 StringUtils 判断是否为空的示例:
StringUtils.isEmpty(
null
) =
true
StringUtils.isEmpty(
""
) =
true
StringUtils.isEmpty(
" "
) =
false
//注意在 StringUtils 中空格作非空处理
StringUtils.isEmpty(
" "
) =
false
StringUtils.isEmpty(
"bob"
) =
false
StringUtils.isEmpty(
" bob "
) =
false
2
.
public
static
boolean
isNotEmpty(String str)
判断某字符串是否非空,等于 !isEmpty(String str)
下面是示例:
StringUtils.isNotEmpty(
null
) =
false
StringUtils.isNotEmpty(
""
) =
false
StringUtils.isNotEmpty(
" "
) =
true
StringUtils.isNotEmpty(
" "
) =
true
StringUtils.isNotEmpty(
"bob"
) =
true
StringUtils.isNotEmpty(
" bob "
) =
true
3
.
public
static
boolean
isBlank(String str)
判断某字符串是否为空或长度为
0
或由空白符(whitespace) 构成
下面是示例:
StringUtils.isBlank(
null
) =
true
StringUtils.isBlank(
""
) =
true
StringUtils.isBlank(
" "
) =
true
StringUtils.isBlank(
" "
) =
true
StringUtils.isBlank(
"\t \n \f \r"
) =
true
//对于制表符、换行符、换页符和回车符
StringUtils.isBlank()
//均识为空白符
StringUtils.isBlank(
"\b"
) =
false
//"\b"为单词边界符
StringUtils.isBlank(
"bob"
) =
false
StringUtils.isBlank(
" bob "
) =
false
4
.
public
static
boolean
isNotBlank(String str)
判断某字符串是否不为空且长度不为
0
且不由空白符(whitespace) 构成,等于 !isBlank(String str)
下面是示例:
StringUtils.isNotBlank(
null
) =
false
StringUtils.isNotBlank(
""
) =
false
StringUtils.isNotBlank(
" "
) =
false
StringUtils.isNotBlank(
" "
) =
false
StringUtils.isNotBlank(
"\t \n \f \r"
) =
false
StringUtils.isNotBlank(
"\b"
) =
true
StringUtils.isNotBlank(
"bob"
) =
true
StringUtils.isNotBlank(
" bob "
) =
true
5
.
public
static
String trim(String str)
去掉字符串两端的控制符(control characters,
char
<=
32
) , 如果输入为
null
则返回
null
下面是示例:
StringUtils.trim(
null
) =
null
StringUtils.trim(
""
) =
""
StringUtils.trim(
" "
) =
""
StringUtils.trim(
" \b \t \n \f \r "
) =
""
StringUtils.trim(
" \n\tss \b"
) =
"ss"
StringUtils.trim(
" d d dd "
) =
"d d dd"
StringUtils.trim(
"dd "
) =
"dd"
StringUtils.trim(
" dd "
) =
"dd"
6
.
public
static
String trimToNull(String str)
去掉字符串两端的控制符(control characters,
char
<=
32
) ,如果变为
null
或
""
,则返回
null
下面是示例:
StringUtils.trimToNull(
null
) =
null
StringUtils.trimToNull(
""
) =
null
StringUtils.trimToNull(
" "
) =
null
StringUtils.trimToNull(
" \b \t \n \f \r "
) =
null
StringUtils.trimToNull(
" \n\tss \b"
) =
"ss"
StringUtils.trimToNull(
" d d dd "
) =
"d d dd"
StringUtils.trimToNull(
"dd "
) =
"dd"
StringUtils.trimToNull(
" dd "
) =
"dd"
7
.
public
static
String trimToEmpty(String str)
去掉字符串两端的控制符(control characters,
char
<=
32
) ,如果变为
null
或
""
,则返回
""
下面是示例:
StringUtils.trimToEmpty(
null
) =
""
StringUtils.trimToEmpty(
""
) =
""
StringUtils.trimToEmpty(
" "
) =
""
StringUtils.trimToEmpty(
" \b \t \n \f \r "
) =
""
StringUtils.trimToEmpty(
" \n\tss \b"
) =
"ss"
StringUtils.trimToEmpty(
" d d dd "
) =
"d d dd"
StringUtils.trimToEmpty(
"dd "
) =
"dd"
StringUtils.trimToEmpty(
" dd "
) =
"dd"
8
.
public
static
String strip(String str)
去掉字符串两端的空白符(whitespace) ,如果输入为
null
则返回
null
下面是示例(注意和 trim() 的区别):
StringUtils.strip(
null
) =
null
StringUtils.strip(
""
) =
""
StringUtils.strip(
" "
) =
""
StringUtils.strip(
" \b \t \n \f \r "
) =
"\b"
StringUtils.strip(
" \n\tss \b"
) =
"ss \b"
StringUtils.strip(
" d d dd "
) =
"d d dd"
StringUtils.strip(
"dd "
) =
"dd"
StringUtils.strip(
" dd "
) =
"dd"
9
.
public
static
String stripToNull(String str)
去掉字符串两端的空白符(whitespace) ,如果变为
null
或
""
,则返回
null
下面是示例(注意和 trimToNull() 的区别):
StringUtils.stripToNull(
null
) =
null
StringUtils.stripToNull(
""
) =
null
StringUtils.stripToNull(
" "
) =
null
StringUtils.stripToNull(
" \b \t \n \f \r "
) =
"\b"
StringUtils.stripToNull(
" \n\tss \b"
) =
"ss \b"
StringUtils.stripToNull(
" d d dd "
) =
"d d dd"
StringUtils.stripToNull(
"dd "
) =
"dd"
StringUtils.stripToNull(
" dd "
) =
"dd"
10
.
public
static
String stripToEmpty(String str)
去掉字符串两端的空白符(whitespace) ,如果变为
null
或
""
,则返回
""
下面是示例(注意和 trimToEmpty() 的区别):
StringUtils.stripToNull(
null
) =
""
StringUtils.stripToNull(
""
) =
""
StringUtils.stripToNull(
" "
) =
""
StringUtils.stripToNull(
" \b \t \n \f \r "
) =
"\b"
StringUtils.stripToNull(
" \n\tss \b"
) =
"ss \b"
StringUtils.stripToNull(
" d d dd "
) =
"d d dd"
StringUtils.stripToNull(
"dd "
) =
"dd"
StringUtils.stripToNull(
" dd "
) =
"dd"
以下方法只介绍其功能,不再举例:
11
.
public
static
String strip(String str, String stripChars)
去掉 str 两端的在 stripChars 中的字符。
如果 str 为
null
或等于
""
,则返回它本身;
如果 stripChars 为
null
或
""
,则返回 strip(String str) 。
12
.
public
static
String stripStart(String str, String stripChars)
和
11
相似,去掉 str 前端的在 stripChars 中的字符。
13
.
public
static
String stripEnd(String str, String stripChars)
和
11
相似,去掉 str 末端的在 stripChars 中的字符。
14
.
public
static
String[] stripAll(String[] strs)
对字符串数组中的每个字符串进行 strip(String str) ,然后返回。
如果 strs 为
null
或 strs 长度为
0
,则返回 strs 本身
15
.
public
static
String[] stripAll(String[] strs, String stripChars)
对字符串数组中的每个字符串进行 strip(String str, String stripChars) ,然后返回。
如果 strs 为
null
或 strs 长度为
0
,则返回 strs 本身
16
.
public
static
boolean
equals(String str1, String str2)
比较两个字符串是否相等,如果两个均为空则也认为相等。
17
.
public
static
boolean
equalsIgnoreCase(String str1, String str2)
比较两个字符串是否相等,不区分大小写,如果两个均为空则也认为相等。
18
.
public
static
int
indexOf(String str,
char
searchChar)
返回字符 searchChar 在字符串 str 中第一次出现的位置。
如果 searchChar 没有在 str 中出现则返回-
1
,
如果 str 为
null
或
""
,则也返回-
1
19
.
public
static
int
indexOf(String str,
char
searchChar,
int
startPos)
返回字符 searchChar 从 startPos 开始在字符串 str 中第一次出现的位置。
如果从 startPos 开始 searchChar 没有在 str 中出现则返回-
1
,
如果 str 为
null
或
""
,则也返回-
1
20
.
public
static
int
indexOf(String str, String searchStr)
返回字符串 searchStr 在字符串 str 中第一次出现的位置。
如果 str 为
null
或 searchStr 为
null
则返回-
1
,
如果 searchStr 为
""
,且 str 为不为
null
,则返回
0
,
如果 searchStr 不在 str 中,则返回-
1
21
.
public
static
int
ordinalIndexOf(String str, String searchStr,
int
ordinal)
返回字符串 searchStr 在字符串 str 中第 ordinal 次出现的位置。
如果 str=
null
或 searchStr=
null
或 ordinal<=
0
则返回-
1
举例(*代表任意字符串):
StringUtils.ordinalIndexOf(
null
, *, *) = -
1
StringUtils.ordinalIndexOf(*,
null
, *) = -
1
StringUtils.ordinalIndexOf(
""
,
""
, *) =
0
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"a"
,
1
) =
0
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"a"
,
2
) =
1
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"b"
,
1
) =
2
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"b"
,
2
) =
5
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"ab"
,
1
) =
1
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"ab"
,
2
) =
4
StringUtils.ordinalIndexOf(
"aabaabaa"
,
"bc"
,
1
) = -
1
StringUtils.ordinalIndexOf(
"aabaabaa"
,
""
,
1
) =
0
StringUtils.ordinalIndexOf(
"aabaabaa"
,
""
,
2
) =
0
22
.
public
static
int
indexOf(String str, String searchStr,
int
startPos)
返回字符串 searchStr 从 startPos 开始在字符串 str 中第一次出现的位置。
举例(*代表任意字符串):
StringUtils.indexOf(
null
, *, *) = -
1
StringUtils.indexOf(*,
null
, *) = -
1
StringUtils.indexOf(
""
,
""
,
0
) =
0
StringUtils.indexOf(
"aabaabaa"
,
"a"
,
0
) =
0
StringUtils.indexOf(
"aabaabaa"
,
"b"
,
0
) =
2
StringUtils.indexOf(
"aabaabaa"
,
"ab"
,
0
) =
1
StringUtils.indexOf(
"aabaabaa"
,
"b"
,
3
) =
5
StringUtils.indexOf(
"aabaabaa"
,
"b"
,
9
) = -
1
StringUtils.indexOf(
"aabaabaa"
,
"b"
, -
1
) =
2
StringUtils.indexOf(
"aabaabaa"
,
""
,
2
) =
2
StringUtils.indexOf(
"abc"
,
""
,
9
) =
3
23
.
public
static
int
lastIndexOf(String str,
char
searchChar)
基本原理同
18
24
.
public
static
int
lastIndexOf(String str,
char
searchChar,
int
startPos)
基本原理同
19
25
.
public
static
int
lastIndexOf(String str, String searchStr)
基本原理同
20
26
.
public
static
int
lastIndexOf(String str, String searchStr,
int
startPos)
List和String的非空判断的更多相关文章
- String的非空判断、Integer的非空判断、list的大小判断,对象的非空判断
1.String的非空判断. StringUtils.isNotEmpty(String str); 2.Integer的非空判断. null != Integer ; 3.list的大小判断. li ...
- String的非空判断:str!=""的为空判断出错问题
if(str!=null && str!= ""){}这是错误的判断 String str1 = ""; String str2 = new S ...
- java8 Optional优雅非空判断
java8 Optional优雅非空判断 import java.util.ArrayList;import java.util.List;import java.util.Optional; pub ...
- java基础之----非空判断
大家好,第一次写博客,一直想写博客,用于自我总结,也用于帮助新同学成长. 平常我们开发的时候,用到很多非空判断,但是很多同学用到的地方不是很准确,这里,我把自己平时遇到的坑跟大家说说.我废话不多,只想 ...
- 异常分类和异常的产生过程解析和Objects非空判断
java.lang.Throwable类是java语言中所有错误的异常的超类. Exception:编译期异常,进行编译(写代码)java程序出现的问题 RuntimeExeption:运行期异常,j ...
- C/C++ 指针的非空判断
一定要分得清楚C和C++的“空指针常量”不是一样的.C标准不保证NULL等于0,所以做指针非空判断时,应该用if(p != NULL):因为“上下文转换到bool值”的统一性,C++就应该用if(p) ...
- JAVAWEB servlet验证登录时进行完全的非空判断防止空值登录
如果不进行完全的非空判断,那么对 "" 这种类型的空值就会导致直接登录 所以需要用下面的字符串处理方法对其进行判断 这样就可以防止空值登录了 容易出现的混淆错误: 这里的空值登录容 ...
- python字符串非空判断
1. 字符串非空判断 2. list 非空判断
- proto3 不支持内建类型的非空判断即 hasXXX
proto3 移除了内建类型的非空判断方法 即代码生成工具不会为 bool int 等类型生成has方法 有使用过proto2 或者其它rpc 框架的人都知道使用has 方法去判断消息里的值是否设置, ...
随机推荐
- Linux下安装MySQL及远程连接MySQL
安装方式一:通过下载官方安装包安装 由于Linux安装MySQL会遇到各种依赖问题,本博文整理了下安装方放,避免遇到依赖问题 查看是否自带mariadbrpm -qa|grep mariadb然后卸载 ...
- TZOJ6556: 嗅探器
最近在练Tarjan,看到这道题目分类在割点里面就想尝试做一下,点开发现题目数据范围竟然如此之小,算了,bfs暴力一发. 题目意思就是你需要找到一个关键节点,也可以理解成,行军打仗时必需经过的地方,敌 ...
- python工业互联网应用实战5—Django Admin 编辑界面和操作
1.1. 编辑界面 默认任务的编辑界面,对于model属性包含"choices"会自动显示下来列表供选择,"datetime"数据类型也默认提供时间选择组件,如 ...
- 如何获得svn的版本号信息?
方法一 popen(可获取命令行执行后的输出结果) 转载自: C++执行命令行指令并获取命令行执行后的输出结果 1 /* 2 Execute command line commands and ge ...
- HDU-6874 Decision 倍增 (2020 HDU多校 D7 D)
Decision 题意 从 \([0,t]\) 中等概率的选取两个数字 \(v_1,v_2\), 定义序列 \(X\) 有 \(X_0=v1+v2,X_{n+1}=(aX_n+c) \mod m\). ...
- [USACO12FEB]Symmetry
传送门: https://www.luogu.com.cn/problem/P3046 https://ac.nowcoder.com/acm/contest/6306/G 题意 给定n个不同的点,求 ...
- Educational Codeforces Round 85 (Rated for Div. 2)
\(Educational\ Codeforces\ Round\ 85\ (Rated\ for\ Div.2)\) \(A. Level Statistics\) 每天都可能会有人玩游戏,同时一部 ...
- 【洛谷 p3372】模板-线段树 1(数据结构--线段树)
题目:已知一个数列,你需要进行下面两种操作:1.将某区间每一个数加上x:2.求出某区间每一个数的和. 解法:如题,模版题.需要加上 lazy 标记,也就是我的 upd.lazy 标记的思路就是对一个结 ...
- hdu3564 Another LIS
Problem Description There is a sequence firstly empty. We begin to add number from 1 to N to the seq ...
- Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) C. Bouncing Ball (后缀和,枚举)
题意:有一长度为\(n\)的平台,平台有的位置有木桩,可以使小球弹起来,小球必须从第\(p\)个位置开始,而且每次都会向右弹\(k\)个单位,然后有的位置是没有木桩的,你可以在这些的空的位置放一个木桩 ...