List和String的非空判断
Posted qcq0703
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的非空判断的主要内容,如果未能解决你的问题,请参考以下文章