欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > Java常用工具类方法详解及使用案例

Java常用工具类方法详解及使用案例

2025/6/6 17:23:49 来源:https://blog.csdn.net/m0_66884848/article/details/148458007  浏览:    关键词:Java常用工具类方法详解及使用案例

一、前言

在Java开发中,工具类(Utility Classes)是我们日常编码中不可或缺的一部分。它们通常包含静态方法,用于执行各种通用任务,如字符串处理、日期操作、集合操作等。本文将详细介绍几个常用工具类的主要方法及其使用案例。

二、Apache Commons Lang3工具类

1. StringUtils

StringUtils 是处理字符串的利器,比JDK自带的String类提供了更多实用的方法。

常用方法:

// 判断字符串是否为空(包括null和"")
StringUtils.isEmpty(str); // 判断字符串是否为空白(包括null、""和"  ")
StringUtils.isBlank(str);// 截取字符串
StringUtils.substring(str, start, end);// 拼接字符串
StringUtils.join(array, separator);// 重复字符串
StringUtils.repeat(str, count);// 判断字符串是否包含某字符
StringUtils.contains(str, searchStr);// 删除空白字符
StringUtils.deleteWhitespace(str);

使用案例:

// 检查字符串是否为空
if (StringUtils.isBlank(input)) {System.out.println("输入不能为空");
}// 安全地截取字符串
String result = StringUtils.substring("Hello World", 0, 5); // "Hello"// 拼接数组元素
String joined = StringUtils.join(new String[]{"a", "b", "c"}, ","); // "a,b,c"

2. ArrayUtils

ArrayUtils 提供了数组操作的便捷方法。

常用方法:

// 判断数组是否为空
ArrayUtils.isEmpty(array);// 添加元素到数组
ArrayUtils.add(array, element);// 合并数组
ArrayUtils.addAll(array1, array2);// 查找元素索引
ArrayUtils.indexOf(array, value);// 反转数组
ArrayUtils.reverse(array);

使用案例:

// 安全地检查数组
int[] arr = {1, 2, 3};
if (ArrayUtils.isNotEmpty(arr)) {System.out.println("数组不为空");
}// 添加元素
int[] newArr = ArrayUtils.add(arr, 4); // [1, 2, 3, 4]// 查找元素位置
int index = ArrayUtils.indexOf(arr, 2); // 1

三、Google Guava工具类

1. Preconditions

Preconditions 提供了参数校验的便捷方法。

常用方法:

// 检查参数是否为true
Preconditions.checkArgument(boolean);// 检查对象是否不为null
Preconditions.checkNotNull(T);// 检查状态
Preconditions.checkState(boolean);// 带错误信息的检查
Preconditions.checkArgument(boolean, errorMsg);

使用案例:

public void process(String input, int count) {// 校验参数Preconditions.checkArgument(count > 0, "count必须大于0");Preconditions.checkNotNull(input, "input不能为null");// 业务逻辑...
}

2. Joiner 和 Splitter

Joiner 使用案例:

// 简单拼接
String result = Joiner.on(",").join("a", "b", "c"); // "a,b,c"// 跳过null值
String result = Joiner.on(";").skipNulls().join("a", null, "b"); // "a;b"// 处理map
Map<String, String> map = ImmutableMap.of("k1", "v1", "k2", "v2");
String mapStr = Joiner.on(",").withKeyValueSeparator("=").join(map); // "k1=v1,k2=v2"

Splitter 使用案例:

// 简单分割
Iterable<String> parts = Splitter.on(',').split("a,b,c"); // ["a", "b", "c"]// 去除空格
Iterable<String> parts = Splitter.on(',').trimResults().split("a, b, c"); // ["a", "b", "c"]// 限制分割次数
Iterable<String> parts = Splitter.on(',').limit(2).split("a,b,c"); // ["a", "b,c"]

四、日期时间工具类

1. Java 8的DateTimeFormatter

// 日期格式化
LocalDate date = LocalDate.now();
String formatted = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));// 日期解析
LocalDate parsedDate = LocalDate.parse("2023-05-20", DateTimeFormatter.ISO_DATE);// 自定义格式化
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
String chineseDate = date.format(formatter);

2. DateUtils (Apache Commons Lang3)

// 日期加减
Date newDate = DateUtils.addDays(new Date(), 5); // 加5天
Date newDate = DateUtils.addMonths(new Date(), 1); // 加1个月// 日期截断(去掉时分秒)
Date truncated = DateUtils.truncate(new Date(), Calendar.DATE);// 判断是否为同一天
boolean sameDay = DateUtils.isSameDay(date1, date2);

五、集合工具类

1. Collections (JDK自带)

// 排序
Collections.sort(list);// 反转
Collections.reverse(list);// 查找最大最小值
Collections.max(collection);
Collections.min(collection);// 安全空集合
List<String> emptyList = Collections.emptyList();
Map<String, String> emptyMap = Collections.emptyMap();// 不可变集合
List<String> unmodifiableList = Collections.unmodifiableList(list);

2. Lists/Sets/Maps (Guava)

// 创建集合
List<String> list = Lists.newArrayList("a", "b", "c");
Set<String> set = Sets.newHashSet("a", "b", "c");
Map<String, String> map = Maps.newHashMap();// 集合操作
Set<String> union = Sets.union(set1, set2); // 并集
Set<String> intersection = Sets.intersection(set1, set2); // 交集
Set<String> difference = Sets.difference(set1, set2); // 差集// 列表分区
List<List<String>> partitions = Lists.partition(bigList, 100); // 每100个一组

六、IO工具类

1. IOUtils (Apache Commons IO)

// 读取文件内容
String content = IOUtils.toString(inputStream, "UTF-8");// 复制流
IOUtils.copy(inputStream, outputStream);// 关闭流
IOUtils.closeQuietly(inputStream); // 静默关闭,不抛异常// 读取所有行
List<String> lines = IOUtils.readLines(inputStream, "UTF-8");

2. FileUtils (Apache Commons IO)

// 读取文件内容
String content = FileUtils.readFileToString(file, "UTF-8");// 写入文件
FileUtils.writeStringToFile(file, content, "UTF-8");// 复制文件/目录
FileUtils.copyFile(srcFile, destFile);
FileUtils.copyDirectory(srcDir, destDir);// 删除目录
FileUtils.deleteDirectory(dir);// 文件比较
boolean isSame = FileUtils.contentEquals(file1, file2);

七、JSON处理工具类

1. Jackson的ObjectMapper

ObjectMapper mapper = new ObjectMapper();// 对象转JSON
String json = mapper.writeValueAsString(obj);// JSON转对象
MyClass obj = mapper.readValue(json, MyClass.class);// JSON转Map
Map<String, Object> map = mapper.readValue(json, new TypeReference<Map<String, Object>>() {});// 美化输出
String prettyJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);

2. Gson

Gson gson = new Gson();// 对象转JSON
String json = gson.toJson(obj);// JSON转对象
MyClass obj = gson.fromJson(json, MyClass.class);// 复杂类型处理
Type listType = new TypeToken<List<MyClass>>() {}.getType();
List<MyClass> list = gson.fromJson(json, listType);

八、总结

工具类可以极大提高我们的开发效率,避免重复造轮子。本文介绍的工具类只是冰山一角,实际开发中还有更多优秀的工具库可供选择。在使用时需要注意:

  1. 根据项目需求选择合适的工具库
  2. 注意工具库的版本兼容性
  3. 对于简单需求,优先考虑JDK自带方法
  4. 合理封装常用工具方法,形成项目自己的工具类

希望本文能帮助大家更好地理解和使用Java中的各种工具类,提高开发效率和代码质量。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词