Hutool不糊涂(一)

本文介绍了Java工具库Hutool,包括它的类型转换、日期时间处理、字段验证、配置工具和日志工具等功能。Hutool遵循Apache2.0协议,提供丰富的API,帮助开发者提高开发效率。文章通过示例代码展示了如何使用Hutool进行类型转换,如String转Date,自定义转换器等,并讲解了日期时间的格式化、计算和转换。此外,还提到了字段验证器和配置文件处理,以及日志工具的便利性。
摘要由CSDN通过智能技术生成

目录

●Hutool是什么?

●最甜的几块糖(Part 1)

●类型转换 

●日期与时间

●字段验证器

●配置工具

●日志工具


●Hutool是什么?

接下来的两篇文章,笔者将给大家安利一个能够明显提升Java开发效率的开源项目Hutool。官方对其描述为:A set of tools to keep java sweet。它其实是一套Java工具包,提供了许多与业务无关的常用方法,避免重复开发。截止笔者撰文,它在Github上已经收获了2033个Star,要知道,大名鼎鼎的Tomcat也不过2628,可见,它是受广大程序员推崇的。

笔者之所以要推荐这个开源项目给大家,最主要是因为其三大优势——

优势1:遵循Apache2.0开源许可协议,商业友好,可以无风险地接入使用;

优势2:提供的工具众多且实用,拥有完善的API手册,方便查找;

优势3:按需配置依赖,伸缩轻量灵活;

 

Hutool项目Github传送门:https://github.com/looly/hutool/

官方最新的API说明文档位于:https://apidoc.gitee.com/loolly/hutool/

使用示例位于:http://hutool.mydoc.io/#category_76195

 

●最甜的几块糖(Part 1)

以下章节将会重点介绍笔者觉得Hutool中最高效实用的几个类,涉及大量的举例代码,读者可以选择性的阅读,也可以作为手册,后期随时翻阅查看。需声明,以下代码均为笔者自行编写,非项目直接来源,大家无序对号入座,还请结合自己的实际业务去使用。

●类型转换 

该类几乎是一个万能的类型转换工具类,提供了大量平时常用的类型转换函数,相比传统写法,会更简洁。举例几个经典例子:

1、String转换为Date。不需要进行异常捕获,转换失败返回null,而不抛出异常;同时也提供单参数与双参数的重载函数,后者在转换失败时返回给定值,该特性Convert中其他大多数函数也具备,下同,不再赘述

//传统写法
String string = "2018-11-11 00:00:01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
    Date date = sdf.parse(string);
} catch (ParseException e) {
    e.printStackTrace();
    Date date = new Date();
}

//“糊涂”写法
String string = "2018-11-11 00:00:01";
Date date = Convert.toDate(string, new Date());

2、时间单位的转换,例如毫秒转化为天,避免了人为计算,也增加了代码的可读性,其中,该函数的第二第三个参数来自于java.util.concurrent下的枚举变量TimeUnit

long milliseconds = 145248462254L;
//传统写法
long day1 = milliseconds/1000/60/60/24;

//“糊涂”写法
long day2 = Convert.convertTime(milliseconds,TimeUnit.MILLISECONDS,TimeUnit.DAYS);

3、自定义转换器。如果Hutool提供的转换函数还不够用,想定义自己类的转换器,也是可以的。我们以代码为例,使用自定义转换器有两个步骤:一是继承Converter<T>接口,实现接口方法(插一句嘴,这是一个函数式接口,完全可以用Lambda的形式去实现,留给感兴趣的读者去尝试。本例将以传统方式书写);二是在转换器仓库ConverterRegistry中注册自定义的转换器,之后就可以使用了。

有如下两个类:报警树节点类与通用树节点类,二者不是继承关系,前者特有报警状态,但没有后者是否显示的标志位。

public class AlarmTreeNode {
    private AlarmTreeNode childTreeNode;
    private boolean isRoot;
    private String alarmName;
    private int deviceIndex;
    private byte alarmStatus;

    public  AlarmTreeNode(){
        this.childTreeNode = null;
        this.isRoot = false;
        this.alarmName = "";
        this.deviceIndex = 0;
        this.alarmStatus = 1;
    }
    public AlarmTreeNode(AlarmTreeNode childTreeNode, boolean isRoot, String alarmName, int deviceIndex, byte alarmStatus) {
        this.childTreeNode = childTreeNode;
        this.isRoot = isRoot;
        this.alarmName = alarmName;
        this.deviceIndex = deviceIndex;
        this.alarmStatus = alarmStatus;
    }

    public AlarmTreeNode getChildTreeNode() {
        return childTreeNode;
    }

    public void setChildTreeNode(AlarmTreeNode childTreeNode) {
        this.childTreeNode = childTreeNode;
    }

    public boolean isRoot() {
        return isRoot;
    }

    public void setRoot(boolean root) {
        isRoot = root;
 
  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Hutool库是一个Java工具包,提供了一些便捷的工具类供开发者使用,简化日常编码工作。其中`ExcelWriter`是用来生成Excel文件的功能组件之一。如果你需要通过`Hutool`来向Excel文件中插入一列数据,可以按照下面的步骤进行操作: ### 准备工作 首先,你需要在项目中添加`Hutool`依赖到你的构建工具的配置文件(如`pom.xml` 或 `build.gradle`),以确保能够引用这个库。 #### Maven 示例 (`pom.xml`): ```xml <dependencies> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-core</artifactId> <version>5.x.y</version> </dependency> </dependencies> ``` #### Gradle 示例 (`build.gradle`): ```groovy dependencies { implementation 'cn.hutool:hutool-core:5.x.y' } ``` 替换`5.x.y`为您实际使用的版本号。 ### 插入一列的步骤 假设你已经有了一个已打开的Excel文件,并希望在指定位置插入一列数据。下面是一个基本示例: 1. **创建ExcelWriter**:初始化`ExcelWriter`对象并设置文件路径、工作表名称等信息。 ```java import cn.hutool.core.io.IoUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelWriter; //... String filePath = "path/to/excel.xlsx"; ExcelWriter writer = new ExcelWriter(filePath); ``` 2. **读取现有数据**:如果需要从已有数据出发修改,先读取原始数据。 ```java ExcelReader reader = new ExcelReader(filePath); ``` 3. **准备新列的数据**:创建一个适合插入的位置的新列数据数组。 ```java String[] newColumnData = {"New Data 1", "New Data 2", ..., "New Data N"}; ``` 4. **插入新列**:使用`insertCol()`方法将新列插入指定位置(例如,插入第3行之前的所有行)。 ```java int newRowPosition = 3; // 插入位置,从0开始计数 writer.insertCol(newRowPosition, newColumnData); ``` 5. **保存更改**:最后,确保将更改应用到Excel文件上。 ```java IoUtil.close(writer); ``` ### 完整代码示例 完整代码示例如下所示: ```java import cn.hutool.core.io.IoUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelWriter; public class HutoolExcelInsertDemo { public static void main(String[] args) throws Exception { String filePath = "path/to/excel.xlsx"; // 替换为实际的文件路径 ExcelWriter writer = new ExcelWriter(filePath); // 假设我们有一个新的数据列表作为插入的列数据 String[] newData = {"New Data 1", "New Data 2", ...}; // 新数据数组 try (ExcelReader reader = new ExcelReader(filePath)) { // 阅读现有的Excel内容 // ... // 将新数据插入到特定位置 int insertPosition = 3; // 插入位置索引 writer.insertCol(insertPosition, newData); } // 应用更改 IoUtil.close(writer); } } ``` --- ### 相关问题: 1. **如何处理大型数据集?** 使用`Hutool`进行大数据量操作时需要注意性能优化。对于大型数据集,考虑分批读写或流式处理,减少内存占用。 2. **如何自定义单元格样式?** `Hutool`允许对单个单元格或整行、整列进行样式定制,如字体颜色、背景色、边框等。 3. **如何导出非标准表格结构?** 对于复杂或非标准的表格布局需求,`Hutool`的`ExcelWriter`功能可能无法直接满足所有需求。在这种情况下,可能需要结合其他工具或自定义代码逻辑来生成所需的Excel格式。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值