java中Hutools常用方法

java中Hutools常用方法Hutool 是一个小而全的 Java 工具类库 通过静态方法封装 降低相关 API 的学习成本 提高工作效率 使 Java 拥有函数式语言般的优雅

大家好,欢迎来到IT知识分享网。

目录

  • 一、依赖
  • 二、Convert
  • 三、DateUtil
  • 四、StrUtil
  • 五、ReflectUtil
  • 六、IdUtil
  • 七、RandomUtil
  • 八、BeanUtil
  • 九、JSONUtil
  • 方法优先于对象
  • 自动识别优于用户定义
  • 便捷性与灵活性并存
  • 适配与兼容
  • 可选依赖原则
  • 无侵入原则

一、依赖

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

二、Convert

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

2.转换为指定类型数组:

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

3.转换为指定类型数组:

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); 

4.转换为日期对象:

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

5.转换为集合

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

三、DateUtil

//当前时间 Date date = DateUtil.date(); //当前时间 Date date2 = DateUtil.date(Calendar.getInstance()); 
String dateStr = "2017-03-01"; Date date = DateUtil.parse(dateStr); 

自定义时间格式做类型转换:

String dateStr = "2017-03-01"; Date date = DateUtil.parse(dateStr, "yyyy-MM-dd"); 

3.格式化日期输出

String dateStr = "2017-03-01"; Date date = DateUtil.parse(dateStr); //结果 2017/03/01 String format = DateUtil.format(date, "yyyy/MM/dd"); //常用格式的格式化,结果:2017-03-01 String formatDate = DateUtil.formatDate(date); //结果:2017-03-01 00:00:00 String formatDateTime = DateUtil.formatDateTime(date); //结果:00:00:00 String formatTime = DateUtil.formatTime(date); 
String dateStr = "2017-03-01 22:33:23"; Date date = DateUtil.parse(dateStr); //一天的开始,结果:2017-03-01 00:00:00 Date beginOfDay = DateUtil.beginOfDay(date); //一天的结束,结果:2017-03-01 23:59:59 Date endOfDay = DateUtil.endOfDay(date); 

四、StrUtil

String fileName = StrUtil.removeSuffix("pretty_girl.jpg", ".jpg") //fileName -> pretty_girl 
String str = "abcdefgh"; String strSub1 = StrUtil.sub(str, 2, 3); //strSub1 -> c String strSub2 = StrUtil.sub(str, 2, -3); //strSub2 -> cde String strSub3 = StrUtil.sub(str, 3, 2); //strSub2 -> c 
String template = "{}爱{},就像老鼠爱大米"; String str = StrUtil.format(template, "我", "你"); //str -> 我爱你,就像老鼠爱大米 

五、ReflectUtil

Java的反射机制,可以让语言变得更加灵活,对对象的操作也更加“动态”,因此在某些情况下,反射可以做到事半功倍的效果。Hutool针对Java的反射机制做了工具化封装,封装包括:

  • 获取构造方法
  • 获取字段
  • 获取字段值
  • 获取方法
  • 执行方法(对象方法和静态方法)

1.获取某个类的所有方法

Method[] methods = ReflectUtil.getMethods(ExamInfoDict.class); 

2.获取某个类的指定方法

Method method = ReflectUtil.getMethod(ExamInfoDict.class, "getId"); 

3.构造对象

ReflectUtil.newInstance(ExamInfoDict.class); 

4.执行方法

class TestClass { 
    private int a; public int getA() { 
    return a; } public void setA(int a) { 
    this.a = a; } } 
TestClass testClass = new TestClass(); ReflectUtil.invoke(testClass, "setA", 10); 

六、IdUtil

  • UUID
  • ObjectId(MongoDB)
  • Snowflake(Twitter)
//生成的UUID是带-的字符串,类似于:a5c8a5e8-df2b-4706-bea4-08d0e3 String uuid = IdUtil.randomUUID(); //生成的是不带-的字符串,类似于:b17f24ff026d40949c85a24f4f375d42 String simpleUUID = IdUtil.simpleUUID(); 

Hutool针对此封装了cn.hutool.core.lang.ObjectId,快捷创建方法为:

//生成类似:5b9e306a4df4f8c54a39fb0c String id = ObjectId.next(); //方法2:从Hutool-4.1.14开始提供 String id2 = IdUtil.objectId(); 
//参数1为终端ID //参数2为数据中心ID Snowflake snowflake = IdUtil.getSnowflake(1, 1); long id = snowflake.nextId(); //简单使用 long id = IdUtil.getSnowflakeNextId(); String id = snowflake.getSnowflakeNextIdStr(); 

七、RandomUtil

int c = RandomUtil.randomInt(10, 100); 

RandomUtil.randomBytes 随机bytes,一般用于密码或者salt生成

byte[] c = RandomUtil.randomBytes(10); 
Set<Integer> set = RandomUtil.randomEleSet(CollUtil.newArrayList(1, 2, 3, 4, 5, 6), 2); 

八、BeanUtil

boolean isBean = BeanUtil.isBean(HashMap.class);//false 
SubPerson person = new SubPerson(); person.setAge(14); person.setOpenid(""); person.setName("测试A11"); person.setSubName("sub名字"); Map<String, Object> map = BeanUtil.beanToMap(person); 
SubPerson p1 = new SubPerson(); p1.setSlow(true); p1.setName("测试"); p1.setSubName("sub测试"); Map<String, Object> map = MapUtil.newHashMap(); BeanUtil.copyProperties(p1, map); 

九、JSONUtil

SortedMap<Object, Object> sortedMap = new TreeMap<Object, Object>() { 
    private static final long serialVersionUID = 1L; { 
    put("attributes", "a"); put("b", "b"); put("c", "c"); }}; JSONUtil.toJsonStr(sortedMap); 

结果:

{ 
   "attributes":"a","b":"b","c":"c"} 

如果我们想获得格式化后的JSON,则:

JSONUtil.toJsonPrettyStr(sortedMap); 

结果:

{ 
    "attributes": "a", "b": "b", "c": "c" } 

2.JSON字符串解析

String html = "{\"name\":\"Something must have been changed since you leave\"}"; JSONObject jsonObject = JSONUtil.parseObj(html); jsonObject.getStr("name"); 

3.XML字符串转换为JSON

String s = "<sfzh>123</sfzh><sfz>456</sfz><name>aa</name><gender>1</gender>"; JSONObject json = JSONUtil.parseFromXml(s); json.get("sfzh"); json.get("name"); 

4.JSON转换为XML

final JSONObject put = JSONUtil.createObj() .set("aaa", "你好") .set("键2", "test"); // <aaa>你好</aaa><键2>test</键2> final String s = JSONUtil.toXmlStr(put); 
@Data public class ADT { 
    private List<String> BookingCode; } @Data public class Price { 
    private List<List<ADT>> ADT; } 
String json = "{\"ADT\":[[{\"BookingCode\":[\"N\",\"N\"]}]]}"; Price price = JSONUtil.toBean(json, Price.class); price.getADT().get(0).get(0).getBookingCode().get(0); 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/124464.html

(0)
上一篇 2025-10-07 13:45
下一篇 2025-10-07 14:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信