hutool小技巧收集

//日期格式化类,提供常用的日期格式化对象
//DatePattern.java
//字符串池
//com.baomidou.mybatisplus.core.toolkit.StringPool.java

//被检查对象为{@code null}返回默认值,否则返回原值  三元表达式代替
T  obj = ObjectUtil.defaultIfNull(object, defaultValue);

//获取子数组  形参:array – 数组 start – 开始位置(包括) end – 结束位置(不包括)
LocalDateTime[] time = ...;
LocalDateTime[] sub = ArrayUtil.sub(time, 2, time.length);

//交集
List<T> list1 = ListUtil.toList(element1, element2, ...);
List<T> list2 = ListUtil.toList(element3, element4, ...);
List<T> intersection = CollUtil.intersection(list1, list2);
//差集
//Hutool 中的差集方法 CollUtil.disjunction(sourceList, targetList) 返回的是两个列表中互相不包含的元素的列表
List<T> difference = CollUtil.disjunction(list1, list2);

 //计算集合的单差集,即只返回【集合1】中有,但是【集合2】中没有的元素
List<T> list=CollUtil.subtractToList(List1, List2)
//使用Java原生API
boolean = list1.removeAll(list2);
//多个集合的完全并集
List<T> list= CollUtil.unionAll(List1, List2)

#字符串拆分为list---hutool
List<String> phoneList = Arrays.stream(sendSMSVO.getPhones().split(",")).collect(Collectors.toList());
List<String> phoneList = StrUtil.split(sendSMSVO.getPhones(), ",", true, true);

//是否有效身份证号,忽略X的大小写
//idCard – 身份证号,支持18位、15位和港澳台的10位
boolean flag = IdcardUtil.isValidCard(String idCard);
#hutool字符串转JSONObject  
JSONUtil.parseObj("{\"Response_AlarmInfoPlate\":{\"info\":\"ok\",\"content\":\"...\",\"is_pay\":\"true\"}}")
#Hutool对象转json字符串
 JSONUtil.toJsonStr(Object)
 #hutool创建json
JSONObject json = JSONUtil.createObj()
#字符串拆分为list---hutool
List<String> phoneList = Arrays.stream(sendSMSVO.getPhones().split(",")).collect(Collectors.toList());
List<String> phoneList = StrUtil.split(sendSMSVO.getPhones(), ",", true, true);
#将 识别大图片内容经过 base64 后的字符串,先解Base64,在存文件
import java.util.Base64;
import cn.hutool.core.io.FileUtil;
FileUtil.writeBytes(Base64.getDecoder().decode(imageFile), "D:\\zygh002-common\\002-工作相关\\15三门峡粮库\\img_full.jpg");
//将Java对象转换成JSON字符串
//使用Hutool将Java对象转换成JSON字符串的代码如下所示
String jsonStr = JSONUtil.toJsonStr(fenceAlarm);//{"com":"COM3","hostId":1,"createTime":1686390579831,"name":"1号注解","status":16}  --时间字段变成了时间戳
#hutool获取指定格式日期字符串
 String dateStr = DateUtil.format(DateUtil.date(), "yyyy/MM/dd HH:mm:ss");
 String dateStr = DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss");
// 获取当前日期的天的字符串
String dayStr = DateUtil.formatDate(new Date(), "dd");
#hutool--IdUtil.IdUtil.objectId()  流水
System.out.println(IdUtil.objectId()); // 6400442cdebadda465d32661  24位
System.out.println(IdUtil.fastUUID()); // 813bd123-69e9-42ae-97c4-2da7895235df
System.out.println(IdUtil.fastSimpleUUID()); // 5547f7f9f0d2428787cdba7b6bd61616--32位
System.out.println(IdUtil.nanoId()); // y-E4JNXw_jURG0GE2sPV0
System.out.println(IdUtil.nanoId(10)); // z6xBGVGM-L
System.out.println(IdUtil.getSnowflake(1, 1).nextIdStr()); // 1631180428218077184--19位
System.out.println(IdUtil.randomUUID()); // 2d62f0af-cbdc-4e3d-aa56-f3d4e2740166--36位
//mybatisplus 自带雪花流水 使用  
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
long id = IdWorker.getId();  //1788461220823818242--19位

//字符串截取,K410171310000--->410171310000
String=StrUtil.sub(organizationId, 1,organizationId.length())
#Hutool 中的 StrUtil 类提供了多重重载的 subSuf() 方法,可以灵活地进行从指定最后一个字符开始截取字符串的操作。具体方法签名如下
public static String subSuf(String str, String suffix, boolean isLast)
String s = "hello-world-java";
String sub = StrUtil.subSuf(s, "-", true); // 截取 "java"
#去除指定的字符--不同的版本
String s = "hello-world-java";
String withoutDash = StrUtil.remove(s, '-'); // 去除 "-" // 输出:helloworldjava
String withoutDash = StrUtil.removeAll(s,'-'); // 去除 "-" // 输出:helloworldjava
//这个方法用于将源对象 source 的属性值拷贝到目标对象 target 中,如果属性名称不匹配,会抛出 BeanUtilException 异常。如果 ignoreError 为 true,则忽略属性名称不匹配的异常,继续进行拷贝。
BeanUtil.copyProperties(Object source, Object target, boolean ignoreError)

//list转字符串
String str = String.join(", ", list);
List<String> list = Arrays.asList("apple", "banana", "orange");
String str = StrUtil.join(",", list);

//验证是否为手机号码(中国)
boolean=PhoneUtil.isMobile(String phone)
//验证是否为座机号码+手机号码(CharUtil中国)+ 400 + 800电话 + 手机号号码(香港)
boolean=PhoneUtil.isPhone(String phone)

//交集
List<T> list1 = ListUtil.toList(element1, element2, ...);
List<T> list2 = ListUtil.toList(element3, element4, ...);
List<T> intersection = CollUtil.intersection(list1, list2);
//差集
//Hutool 中的差集方法 CollUtil.disjunction(sourceList, targetList) 返回的是两个列表中互相不包含的元素的列表
List<T> difference = CollUtil.disjunction(list1, list2);

 //计算集合的单差集,即只返回【集合1】中有,但是【集合2】中没有的元素
list=CollUtil.subtractToList(List1, List2)
//使用Java原生API
boolean = list1.removeAll(list2);
//多个集合的完全并集
list= CollUtil.unionAll(List1, List2)

//创建StringBuilder对象,非线程安全的
StringBuilder= StrUtil.builder();

//总结来说,HttpUtil 是一个简化了 HTTP 请求操作的工具类,提供了便捷的接口来发送和接收 HTTP 请求。而 HttpRequest 则是一个更灵活的对象,可以进行更多的自定义配置。
String val = HttpUtil.get("http://172.16.21.144:20007/weighbridge/open-read", params);
HttpRequest.post( "http://127.0.0.1:9999/sms/sendSMS")
//        .header("Content-Type", "application/json")
        .body(jsonStr)
        .timeout(20000)
        .execute().body();

//list转int数组        
int[] arr = ArrayUtil.toArray(List<Integer>, int.class)      
//Ingeger数组转int数组
int[] arr = ArrayUtil.unWrap(Integer[]);

//阿拉伯数字转换成中文,小数点后四舍五入保留两位. 使用于整数、小数的转换,//参数:数字 是否使用繁体
String =NumberChineseFormatter.format(double amount, boolean isUseTraditional);
//阿拉伯数字转换成中文,小数点后四舍五入保留两位. 使用于整数、小数的转换 //参数:数字 是否使用繁体  是否为金额模式
String =NumberChineseFormatter.format(double amount, boolean isUseTraditional, boolean isMoneyMode)

//hutool的ListUtil封装的分页工具类更好用
List<String> results = ListUtil.page(pageNo, pageSize, list);

//判断两个日期相差的时长,只保留绝对值,相差的单位秒
long closeInitialDelay = DateUtil.between(openTime, closeTime, DateUnit.SECOND);
//获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期
DateTime = DateUtil.offset(closeTime, DateField.MINUTE, -30)

//日期字符串转时间戳
long=DateUtil.parse("2023-01-01 00:00:00").getTime()

//获取上一天开始时间
DateTime startTime = DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.date(), -1));
获取上一天结束时间
DateTime endTime = DateUtil.endOfDay(DateUtil.offsetDay(DateUtil.date(), -1));
//获取上月开始时间
DateTime startDate = DateUtil.beginOfMonth(DateUtil.offsetMonth(DateUtil.date(), -1));
//获取上个月结束时间
DateTime endDate = DateUtil.endOfMonth(DateUtil.offsetMonth(DateUtil.date(), -1));
//获取上季度开始时间
DateTime startDate = DateUtil.beginOfQuarter(DateUtil.offsetMonth(DateUtil.date(), -3));
//获取上季度结束时间
DateTime endDate = DateUtil.endOfQuarter(DateUtil.offsetMonth(DateUtil.date(), -3));
//获取上年度开始时间
DateTime startDate = DateUtil.beginOfYear(DateUtil.offsetMonth(DateUtil.date(), -12));
//获取上年度结束时间
DateTime endDate = DateUtil.endOfYear(DateUtil.offsetMonth(DateUtil.date(), -12));

//深拷贝
List<DataClassification> clonedList = ObjectUtil.cloneByStream(dataClassifications); 

//请求头信息
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String userId = dataServiceService.getUserId(request);

//这段代码获取了当前Java应用程序的工作目录(即用户当前工作的目录)的路径,并将其保存在名为"path"的字符串变量中。
String path = System.getProperty("user.dir");

//hutool日期格式类
DatePattern.java

List<ControlCarTemp> saveCachedDataList  根据属性id去重
List<ControlCarTemp> distinct = CollUtil.distinct(saveCachedDataList, ControlCarTemp::getId, false);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值