您的位置 首页 java

Java开发必用神器,Hutool工具包

在日常的开发中,我们经常会用到很多工具类,比如Http请求、随机数、非空判断、日期转换、文件操作等等,hutool工具包为我们提供了这些常用的工具类,很大程度的提高了我们开发的效率。

安装

Maven

在项目的pom.xml的dependencies中加入以下内容

   <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>5.7.13</version>
   </dependency>  

Gradle

 implementation 'cn.hutool:hutool-all:5.7.13'  

示例

Http请求,Post请求之普通表单

 //链式构建请求
String result = HttpRequest.post(url)
    .header(Header.USER_AGENT, "Hutool http")//头信息,多个头信息多次调用此方法即可
    .form(paramMap)//表单内容
    .timeout(20000)//超时,毫秒
    .execute().body();
Console.log(result);  

Http请求,Post请求之 Restful

 //json字符串
String json = ...;
String result = HttpRequest.post(url)
    .body(json)
    .execute().body();
Console.log(result);  

Http请求,Get请求

 String body = HttpRequest.get("www.baidu.com")
  .execute()
  .body();
Console.log(body);  

其它自定义项

同样,我们通过HttpRequest可以很方便地做以下操作:

  • 指定请求头
  • 自定义Cookie(cookie方法)
  • 指定是否keepAlive(keepAlive方法)
  • 指定表单内容(form方法)
  • 指定请求内容,比如rest请求指定JSON请求体(body方法)
  • 超时设置(timeout方法)
  • 指定代理(setProxy方法)
  • 指定 SSL协议 (setSSLProtocol)
  • 简单验证(basicAuth方法)

Emoji工具-EmojiUtil

加入依赖

 <dependency>
    <groupId>com.vdurmont</groupId>
    <artifactId>emoji-java</artifactId>
    <version>4.0.0</version>
</dependency>  

转义Emoji字符

 String alias = EmojiUtil.toAlias("");
//:smile:  
 将转义的别名转为Emoji字符  
 String emoji = EmojiUtil.toUnicode(":smile:");
//可转换为表情  

将字符串中的Unicode Emoji字符转换为HTML表现形式

 String alias = EmojiUtil.toHtml("");  

计时器工具-TimeInterval

Hutool通过封装 TimeInterval 实现计时器功能,即可以计算方法或过程执行的时间。

 TimeInterval timer = DateUtil.timer();

//---------------------------------
//-------这是执行过程
//---------------------------------

timer.interval();//花费毫秒数
timer.intervalRestart();//返回花费时间,并重置开始时间
timer.intervalMinute();//花费分钟数  

唯一ID工具-IdUtil

在分布式环境中,唯一ID生成应用十分广泛,生成方法也多种多样,Hutool针对一些常用生成策略做了简单封装。

唯一ID生成器的工具类,涵盖了:

  • UUID
  • ObjectId(MongoDB)
  • Snowflake(Twitter)

UUID

 //生成的UUID是带-的字符串,类似于:a5c8a5e8-df2b-4706-bea4-08d0939410e3
String uuid = IdUtil.randomUUID();

//生成的是不带-的字符串,类似于:b17f24ff026d40949c85a24f4f375d42
String simpleUUID = IdUtil.simpleUUID();  

说明 Hutool重写 java.util.UUID 的逻辑,对应类为 cn.hutool.core.lang.UUID ,使生成不带-的UUID字符串不再需要做字符替换,性能提升一倍左右

ObjectId

 //生成类似:5b9e306a4df4f8c54a39fb0c
String id = ObjectId.next();

//方法2:从Hutool-4.1.14开始提供
String id2 = IdUtil.objectId();  

Snowflake

分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 Twitter 的Snowflake 算法就是这种生成器。

 //参数1为终端ID
//参数2为数据中心ID
Snowflake snowflake = IdUtil.getSnowflake(1, 1);
long id = snowflake.nextId();  

注意 IdUtil.createSnowflake 每次调用会创建一个新的Snowflake对象,不同的Snowflake对象创建的ID可能会有重复,因此请自行维护此对象为单例,或者使用 IdUtil.getSnowflake 使用全局单例对象。

Convert类

Convert 类可以说是一个工具方法类,里面封装了针对Java常见类型的转换,用于简化类型转换。 Convert 类中大部分方法为toXXX,参数为Object,可以实现将任意可能的类型转换为指定类型。同时支持第二个参数 defaultValue 用于在转换失败时返回一个默认值。

Java常见类型转换

转换为字符串:

 int a = 1;
//aStr为"1"
String aStr = Convert.toStr(a);

long[] b = {1,2,3,4,5};
//bStr为:"[1, 2, 3, 4, 5]"
String bStr = Convert.toStr(b);  

转换为指定类型数组:

 String[] b = { "1", "2", "3", "4" };
//结果为 Integer 数组
Integer[] intArray = Convert.toIntArray(b);

long[] c = {1,2,3,4,5};
//结果为Integer数组
Integer[] intArray2 = Convert.toIntArray(c);  

转换为日期对象:

 String a = "2017-05-06";
Date value = Convert.toDate(a);  

转换为集合

 Object[] a = {"a", "你", "好", "", 1};
List<?> list = Convert.convert(List.class, a);
//从4.1.11开始可以这么用
List<?> list = Convert.toList(a);  

半角转全角:

 String a = "123456789";

//结果为:"123456789"
String sbc = Convert.toSBC(a);  

全角转半角:

 String a = "123456789";

//结果为"123456789"
String dbc = Convert.toDBC(a);  

身份证工具-IdcardUtil

IdcardUtil 现在支持大陆15位、18位身份证,港澳台10位身份证。

工具中主要的方法包括:

  1. isValidCard 验证身份证是否合法
  2. convert15To18 身份证15位转18位
  3. getBirthByIdCard 获取生日
  4. getAgeByIdCard 获取年龄
  5. getYearByIdCard 获取生日年
  6. getMonthByIdCard 获取生日月
  7. getDayByIdCard 获取生日天
  8. getGenderByIdCard 获取性别
  9. getProvinceByIdCard 获取省份
 String ID_18 = "321083197812162119";
String ID_15 = "150102880730303";

//是否有效
boolean valid = IdcardUtil.isValidCard(ID_18);
boolean valid15 = IdcardUtil.isValidCard(ID_15);

//转换
String convert15To18 = IdcardUtil.convert15To18(ID_15);
Assert.assertEquals(convert15To18, "150102198807303035");

//年龄
DateTime date = DateUtil.parse("2017-04-10");
        
int age = IdcardUtil.getAgeByIdCard(ID_18, date);
Assert.assertEquals(age, 38);

int age2 = IdcardUtil.getAgeByIdCard(ID_15, date);
Assert.assertEquals(age2, 28);

//生日
String birth = IdcardUtil.getBirthByIdCard(ID_18);
Assert.assertEquals(birth, "19781216");

String birth2 = IdcardUtil.getBirthByIdCard(ID_15);
Assert.assertEquals(birth2, "19880730");

//省份
String province = IdcardUtil.getProvinceByIdCard(ID_18);
Assert.assertEquals(province, "江苏");

String province2 = IdcardUtil.getProvinceByIdCard(ID_15);
Assert.assertEquals(province2, "内蒙古");  

除了上面列举的之外,还有很多工具类在日常开发中都很实用!

文章来源:智云一二三科技

文章标题:Java开发必用神器,Hutool工具包

文章地址:https://www.zhihuclub.com/199681.shtml

关于作者: 智云科技

热门文章

网站地图