1. 常用方法总结
1.1. StringUtils.isEmpty(String)、StringUtils.isBlank()
1.1.1. maven依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version> <!-- 使用时请检查最新版本 -->
</dependency>
1.1.2. 使用示例
import org.apache.commons.lang3.StringUtils;
public class Main {
public static void main(String[] args) {
String nullString = null;
String emptyString = "";
String spaceString = " ";
String normalString = "Hello";
System.out.println(StringUtils.isEmpty(nullString)); // 输出: true
System.out.println(StringUtils.isEmpty(emptyString)); // 输出: true
System.out.println(StringUtils.isEmpty(spaceString)); // 输出: false
System.out.println(StringUtils.isEmpty(normalString)); // 输出: false
// 使用 StringUtils.isBlank 检查空格字符串
System.out.println(StringUtils.isBlank(spaceString)); // 输出: true
}
}
1.2. BeanUtils.copyProperties(O1, O2)
将对象O1的属性,复制到对象O2的属性,只有类型和名称相同的属性才会被复制,否则就是null
public class Solutions {
@Data
@AllArgsConstructor
public static class Stu1{
String name;
String contact;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class Stu2{
String name;
String id;
}
public static void main(String[] args) throws JsonProcessingException {
Stu1 stu1 = new Stu1("d","3");
Stu2 stu2 = new Stu2();
BeanUtils.copyProperties(stu1,stu2);
System.out.println(stu2.name); //输出d
System.out.println(stu2.id); //输出null
}
}
1.3. Optional.ofNullable
- 作用:对入参进行null值判断,分别做出不同处理
Student student = new Student("3","3","3",null); // 假设这里 student.getMap() 返回一个可能为 null 的 Map
Map<String, Map<String, Object>> map = Optional.ofNullable(student.getMap())
.orElseGet(() -> new HashMap<>()); // 使用 new HashMap<> 来创建一个新的、可修改的 Map
if (!map.containsKey("ability")) {
map.put("ability", new HashMap<>());
}
上面表示:student.getMap()如果返回的是null,则创建一个新的map。
注意:如下代码返回的是一个空的map,空的map不允许修改,是只读的、不可修改的 Map 实例
Optional.ofNullable(student.getMap()).orElseGet(Collections::emptyMap)
- null值异常处理
Student student = new Student("3","3","3",null); // 假设这里student.getMap()可能返回null
Map<String, Map<String, Object>> map = Optional.ofNullable(student.getMap())
.orElseThrow(() -> new IllegalArgumentException("Student's map must not be null"));
System.out.println(map);
if (!map.containsKey("ability")) {
map.put("ability", new HashMap<>());
}
- 总结:
-
- orElseThrow抛出异常
- orElseGet返回默认值
1.4. Objects.isNull()
1.4.1. 使用示例
import java.util.Objects;
public class ObjectsDemo {
public static void main(String[] args) {
String str = null;
boolean isNull = Objects.isNull(str);
System.out.println(isNull); // 输出:true
str = "Hello, World!";
isNull = Objects.isNull(str);
System.out.println(isNull); // 输出:false
}
}
1.5. Arrays.asList方法
Arrays.asList()
是 Java 中的一个静态方法,用于将数组转换为固定大小的列表(实际上是 List
接口的一个视图,由 Arrays.ArrayList
类实现,但注意这不是 java.util.ArrayList
)。这个方法在 java.util.Arrays
类中定义。
以下是 Arrays.asList()
的一些关键点:
- 转换数组为列表:它接受一个或多个数组元素作为参数,并返回一个包含这些元素的固定大小的列表。
List<String> list = Arrays.asList("a", "b", "c");
- 不支持修改结构:返回的列表是固定大小的,这意味着你不能使用像
add()
或addAll()
这样的方法来添加元素。如果你尝试这样做,会抛出UnsupportedOperationException
。同样,你也不能使用remove()
方法来删除元素。 - 修改元素:虽然你不能修改列表的大小,但你可以修改列表中元素的内容(如果它们是可变的)。
List<String> list = Arrays.asList("a", "b", "c");
list.set(1, "B"); // 这会工作,将第二个元素从 "b" 修改为 "B"
- 基本类型数组:
Arrays.asList()
不接受基本类型数组(如int[]
、double[]
等)作为参数。如果你尝试这样做,它会将整个数组作为列表中的一个元素。如果你需要这样的列表,你可能需要先将基本类型数组转换为包装类型的数组(如Integer[]
、Double[]
等)。
int[] intArray = {1, 2, 3};
List<int[]> list = Arrays.asList(intArray); // 这会创建一个只包含一个元素的列表,该元素是 intArray
Integer[] integerArray = {1, 2, 3};
List<Integer> integerList = Arrays.asList(integerArray); // 这会创建一个包含三个元素的列表
- 用途:这个方法在需要将数组作为列表传递给需要
List
参数的方法时非常有用,或者你只是想在不需要动态大小的情况下快速遍历数组元素。 - 替代方案:如果你需要一个可以动态修改大小的列表,你可以使用
java.util.ArrayList
的构造函数来创建一个新的列表,并将数组元素添加到其中。
int[] intArray = {1, 2, 3};
List<Intege