java开发辅助工具_java开发神辅助--Hutool工具类库

Hutool是一个轻量级的Java工具类库,提供了控制台打印、类型转换、日期处理、IO操作、字符串处理等多种便捷功能。它简化了许多常见的开发任务,如Console.log()和Convert.convert()方法,使得打印语句和类型转换更加直观。此外,Hutool还支持集合、文件、字符串和日期等操作,帮助开发者提高工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java开发神辅助--Hutool工具类库

Hutool 简称糊涂工具

寓意追求“万事都作糊涂观,无所谓失,无所谓得

Hutool 轻量(不依赖任何jar包)、干练(工具类一个比一个香)

而且Hutool的官方文档也是解释的很清晰

下面小编向大家介绍一下Hutool的使用 相信你也会爱上他的

先上jar包下载地址

Hutool核心(Hutool-core)

本文主要介绍Hutool比较核心的内容

控制台打印封装 lang.Console

从此以后不用System.out.println打天下

Hutool对java的打印语句也做了封装 Console下的log 和error方法

log等同于System.out.println

error 等同于System.err.println

但是你要仅仅这么认为那就错了 Hutool对打印语句的封装不是仅仅把他封装成一个方法 同时支持了类似于Slf4j的字符串模板语法

比如 大家都熟知的 打印数组 如果用System.out.println的话显然打印不出我们想要的结果

但是log会自动将对象(包括数组)转为字符串形式

//利用静态导包来简化代码

String[] s= {"1","2","3"};

out.println(s);

Ljava.lang.String;@3f8f9dd6

log(s);

//[1, 2, 3]

//所以说如果你在项目中引用了Hutool工具库的话 你会选择log吗

//反正小编是爱不释手了

万能转换器 convert.Convert

Convert是小编最爱技术之一

解放双手感觉再一次啪啪的打到了脸上

常见类型转换

//转为字符串 toStr()

int i=1;

String str3 = toStr(i);

log(str3);// 1

double[] d= {1.0,2.0,3.0};

String str4 = toStr(d);

log(str4);// [1.0, 2.0, 3.0]

//转为指定类型数组

String str5="12345";

//结果为Integer数组

Integer[] intArray = toIntArray(str5);

log(intArray);// [12345]

long[] cstr = {1,2,3,4,5};

//结果为Integer数组

Integer[] intArray2 = toIntArray(cstr);

log(intArray2);// [1, 2, 3, 4, 5]

//转换为集合

char[] charl= {'a','b','c','d'};

toList(charl).forEach(Console::log);

// a b c d

//转换为日期

String str6 = "2017-05-06";

Date value = Convert.toDate(str6);

//当然了 如果你觉得上面这些对应的方法还是麻烦的话 可以用convert方法:

//集合转为字符串

convert(String.class,List.of(1,2,3,4));

//数组转为集合

int[] ic= {1,2,3,4};

convert(List.class,ic);

其他类型转换器

//泛型类型

//通过convert(TypeReference reference, Object value)方法,

//自行new一个TypeReference对象可以对嵌套泛型进行类型转换。

//例如,我们想转换一个对象为List类型,

//此时传入的标准Class就无法满足要求,此时我们可以这样:

Object[] ao = { "a", "你", "好", "", 1 };

List listf = convert(new TypeReference>() {}, ao);

//半角和全角转换

String sa = "123456789";

String ssbc = toSBC(sa);

//"123456789"

//半角->全角

String dbc = toDBC(ssbc);

//123456789

//全角->半角

//金额大小写转换digitToChinese

double dou = 67556.32;

String dig = digitToChinese(a);

log(dig);// 壹仟贰佰叁拾肆元整

//包装类与原始类型转换

//去包装

Class> wrapClass = Integer.class;

Class> unWraped = Convert.unWrap(wrapClass);

log(unWraped);// int

//包装

Class> primitiveClass = long.class;

Class> wraped = Convert.wrap(primitiveClass);

log(wrapClass);// class java.lang.Integer

//比较有趣的农历日期 ChineseDate

ChineseDate date = new ChineseDate(DateUtil.parseDate("2020-01-25"));

// 一月

log(date.getChineseMonth());

// 正月

log(date.getChineseMonthName());

// 初一

log(date.getChineseDay());

// 庚子

log(date.getCyclical());

// 鼠

log(date.getChineseZodiac());

// 春节

log(date.getFestivals());

// 庚子鼠年 正月初一

log(date.toString());

IO的相关处理

FileUtil 文件工具类

总体来说,FileUtil类包含以下几类操作工具:

文件操作:包括文件目录的新建、删除、复制、移动、改名等

文件判断:判断文件或目录是否非空,是否为目录,是否为文件等等。

绝对路径:针对ClassPath中的文件转换为绝对路径文件。

文件名:主文件名,扩展名的获取

对文件本身的操作:

exist 判断文件是否存在

getAbsolutePath获取绝对路径

getName获取文件名

extName 获取文件扩展名

ls 列出目录和文件

touch 创建文件,如果父目录不存在也自动创建

mkdir 创建目录,会递归创建每层目录

del 删除文件或目录(递归删除,不判断是否为空),这个方法相当于Linux的delete命令

copy 拷贝文件或目录

rename(File file, String newName, boolean isRetainExt, boolean isOverride)

修改文件或目录的文件名,不变更路径,只是简单修改文件名

重命名有两种模式:

isRetainExt为true时,保留原扩展名:

为false则相反

对文件内容的操作:

/**

* 读操作:包括类似IoUtil中的getReader、readXXX操作

* 写操作:包括getWriter和writeXXX操作

*/

getInputStream() 获得一个读入流对象

getOutputStream 获得一个输出流对象

getReader 获得一个带缓存的读入对象

getWriter 获得一个带缓存的写入对象

getPrintWriter(File file, String charset, boolean isAppend)

获得一个打印写入对象,可以有print

writeLines 将列表写入文件

writeMap(Map,?> map, File file, Charset charset, String kvSeparator, boolean isAppend)

将Map写入文件,每个键值对为一行,一行中键与值之间使用kvSeparator分隔

FileReader、FileWriter 文件读取写入类

FileReader 和FileWriter 这两个类是Hutool为分清职责而创建的对文件读写操作类

官方说明 比较推荐用更方便的FileUtil 进行文件操作

文件读取-FileReader:

//创建方式:

FileUtil.touch("t.txt");

FileReader fileReader = new FileReader("t.txt");

FileReader fileReader3 = new FileReader(new File("t.txt"));

FileReader fileReader2 = FileReader.create(new File("t.txt"));

//第二个参数都可设置编码格式

//方法:

fileReader.readLines();//从文件中读取一行内容

fileReader.readString();//读取文件内容

文件写入-FileWriter:

//创建方式:

FileWriter fileWriter = new FileWriter("t.txt");

FileWriter fileWriter2 = new FileWriter(new File("t.txt"));

FileWriter fileWriter3 = FileWriter.create(new File("t.txt"));

//方法:

fileWriter.append("abc");//将字符串追加到文件中

fileWriter.appendLines(List.of(1,2,3));//将列表追加到文件中

fileWriter.write("abc");//将字符串写入覆盖到文件中

fileWriter.writeLines(List.of(1,2,3));//将列表覆盖到文件中

fileWriter.writeMap(map, kvSeparator, isAppend)

//将Map写入文件,每个键值对为一行,一行中键与值之间使用kvSeparator分隔 第三个参数设置是否追加

字符串的处理 util.StrUtil

由于字符串的处理比较多 小编只抽取一些比较典型的作为案例

大家可以参考文章最后的链接继续探索

字符串的截取

//字符截取 sub

//与jdk中不同的是 改方法不会抛出异常 、-1代表最后一个字符、传参顺序不重要

//ps: 依旧是包含小值 不包含大值

String su="abcde";

log(StrUtil.sub(su,3,1));//bc

log(StrUtil.sub(su,2,-1));//cd

用字符串模板代替字符串拼接

String format="{}我的月工资是:{}";

String format2 = StrUtil.format(format, "呵呵",100);

log(format2);

//听说是作者的最骄傲工程之一??? 哈哈哈 厉害了

对字符串 内容的判断:

//判断字符串是否为空或空格 是则返回true

//hasEmpty 只能判断是否为空或为null

boolean hasEmpty = StrUtil.hasEmpty(" ");

log(hasEmpty);// false

//hasBlank 可判断是否为空或者不可见

boolean hasBlank = StrUtil.hasBlank(" ");

log(hasBlank);//true

boolean blank2 = StrUtil.containsBlank("1 2 3 4");//判断字符串中是否包含空

log(blank2);//true

String blank = StrUtil.cleanBlank("1 2 3 4");//清空字符串中空白字符

log(blank);//1234

boolean contains = StrUtil.contains("12345", "12");//判断指定字串或字符在字符串中是否出现过

log(contains);//true

String reverse = StrUtil. reverse("12345");//翻转字符串

log(reverse);//54321

计算两个字符串的相似度

double similar2 = StrUtil.similar("123", "234");

log(similar2);//0.6666666667

String similar = StrUtil.similar("123", "234",100);

//计算两个字符串的相似度百分比

log(similar);//66.66666667%

获取Stringbuilder对象:

StringBuilder builder2 = StrUtil.builder();

集合相关

集合工具 collection.CollUtil

集合的创建:

//当然了 跟Guava中集合的创建类似

HashMap hashMap = CollUtil.newHashMap();

HashSet set = CollUtil.newHashSet();

ArrayList arrayList = newArrayList();

//可以利用静态导包 减少代码

集合转字符串 join

//集合转字符串

String string2 = CollUtil.join(List.of("a","b","c","d","e"), "#"); //string2 -> a#b#c#d#e

两个集合 合并为map

//zip 将两个集合或者数组的元素一一对应

String[] string3 = new String[]{"a", "b", "c"};

Integer[] ints = new Integer[]{1, 2, 3};

Map treeMap = zip(string3,ints);

System.out.println(treeMap); // {a=1, b=2, c=3}

String string4 = "a,b,c";

String string5 = "1,2,3";

Map map2 =CollUtil.zip(string4,string5, ",");

System.out.println(map2); // {a=1, b=2, c=3}

统计集合中元素个数 countMap

//countMap(Iterable collection)

//根据集合返回一个元素计数的 Map

//所谓元素计数就是假如这个集合中某个元素出现了n次,那将这个元素做为key,n做为value

Map map3 = CollUtil.countMap(List.of(1,2,3,4,2,3));

log(map3);//{1=1, 2=2, 3=2, 4=1}

列表工具 ListUtil

filter 过滤列表

List list2 = ListUtil.toLinkedList("1", "2", "3");

List filter = ListUtil.filter(list2, Str->"hehe"+Str);

log(filter);//[hehe1, hehe2, hehe3]

获取满足指定规则所有的元素的位置:

List list3 = ListUtil.toLinkedList("1", "2", "3", "4", "3", "2", "1");

int[] indexArray = ListUtil.indexOfAll(list3, "2"::equals);

// [1, 5]

Map工具 MapUtil

of 将多个键值对添加到map中

Map map4 = MapUtil.of(new String[][] {

{"1", "A"},

{"2", "B"},

{"3", "C"}

});

//{1=A, 2=B, 3=C}

BiMap 双向映射的Map

和Guava中的BiMap类似

BiMap biMap = new BiMap<>(new HashMap<>());

biMap.put("aaa", 111);

biMap.put("bbb", 222);

// 111

biMap.get("aaa");

// 222

biMap.get("bbb");

// aaa

biMap.getKey(111);

// bbb

biMap.getKey(222);

线程安全的HashSet-ConcurrentHashSet

使用方式跟普通的HashSet一样

Hutool只是借助Jdk中的ConcurrentHashMap封装了线程安全的ConcurrentHashSet

Hutool参考文档:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值