个人总结的Java工具类

有补充的欢迎大家帮我补充

  • list去除中括号
  • 时间转换(过去了多长时间)
  • 判断参数是不是为空或者为null
  • 模糊搜索(加强)
  • 正则判断是否包含大小写
  • 判断手机号格式是否正确
  • 获取IP地址
  • 获取mac地址
  • 获取uuid 32位 64位
  • 判断是否包含
  • 数组分页
  • 数组去重
  • 身份证获取性别
  • 生日判断年龄
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** 个人工具类** @author zhujx* @date 2019-09-18 17:07**/
@Slf4j
public class PersonalUtils {/*** list去除中括号** @param list 数组* @return java.lang.String* @author zhujx* @date 2019/7/3*/public static String idsToString(List<Long> list) {return StringUtils.join(list, ",");}/*** 时间转换** @param time 时间戳* @return java.lang.String* @author zhujx* @date 2019/8/6*/public static String stampToDate(Long time) {time = time / 1000;String dateTimes;long days = time / (60 * 60 * 24);long hours = (time % (60 * 60 * 24)) / (60 * 60);long minutes = (time % (60 * 60)) / 60;long seconds = time % 60;if (days > 0) {dateTimes = days + "天" + hours + "小时" + minutes + "分钟";} else if (hours > 0) {dateTimes = hours + "小时" + minutes + "分钟";} else if (minutes > 0) {dateTimes = minutes + "分钟";} else {dateTimes = seconds + "秒";}return dateTimes;}/*** 判断参数** @param obj 参数* @return boolean* @author zhujx* @date 2019/8/14*/public static boolean isBlank(Object... obj) {boolean isTrue = false;for (Object o : obj) {if (o == null) {return true;} else if (o instanceof String) {isTrue = isTrue || StringUtils.isBlank(o.toString());} else if (o instanceof List) {isTrue = isTrue || ((List) o).isEmpty();}}return isTrue;}/*** 模糊搜索sql** @param name 参数* @return java.lang.String* @author zhujx* @date 2019/8/23*/public static String getLikeName(String name) {if (isBlank(name)) {return null;} else {return "%" + name + "%";}}/*** 加强搜索sql** @param name 参数* @return java.lang.String* @author zhujx* @date 2019/8/23*/public static String getLikeNameUp(String name) {if (isBlank(name)) {return null;}StringBuilder sb = new StringBuilder();for (int i = 0; i < name.length(); i++) {sb.append("%");sb.append(name.charAt(i));}return sb.append("%").toString();}private static final Pattern PATTERN_UP = Pattern.compile("^.*[A-Z]+.*$");private static final Pattern PATTERN_LOW = Pattern.compile("^.*[a-z]+.*$");/*** 正则表达式判断是否包括大小写** @param password 密码* @return boolean* @author zhujx* @date 2019/8/23*/public static boolean pattern(String password) {Matcher matcher = PATTERN_UP.matcher(password);Matcher matcher1 = PATTERN_LOW.matcher(password);return matcher.matches() && matcher1.matches();}private static final Pattern MOBILE = Pattern.compile("^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$");/*** 判断手机号是否正确** @param phone 手机号* @return boolean* @author zhujx* @date 2019/9/18*/public static boolean isPhone(String phone) throws Exception {int mobileSize = 11;if (phone.length() != mobileSize) {throw new Exception("手机号应为11位数!");} else {Matcher m = MOBILE.matcher(phone);boolean isMatch = m.matches();if (!isMatch) {throw new Exception("请填入正确的手机号!");} else {return true;}}}/*** 获取ip** @param request request* @return java.lang.String* @author zhujx* @date 2020/12/14 13:47*/public static String getIpAddress(HttpServletRequest request) {String ip = request.getHeader("x-forwarded-for");if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();}if (ip.contains(",")) {return ip.split(",")[0];} else {return ip;}}/*** 获得32长度的UUID字符串** @return java.lang.String* @author zhujx* @date 2020/4/20*/public static String getUuid32() {return UUID.randomUUID().toString().replace("-", "");}/*** 获得64长度的UUID字符串** @return java.lang.String* @author zhujx* @date 2020/4/20*/public static String getUuid64() {return getUuid32() + getUuid32();}/*** 获取本机的mac地址 windows版** @return java.lang.String* @author zhujx* @date 2021/3/5 10:28*/public static String getLocalMac() throws Exception {InetAddress ia = InetAddress.getLocalHost();//获取网卡,获取地址byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();StringBuilder sb = new StringBuilder("");for (int i = 0; i < mac.length; i++) {if (i != 0) {sb.append("-");}//字节转换为整数int temp = mac[i] & 0xff;String str = Integer.toHexString(temp);if (str.length() == 1) {sb.append("0").append(str);} else {sb.append(str);}}return sb.toString().toUpperCase();}/*** 判断包含** @param value  值* @param values 值数组* @return boolean* @author zhujx* @date 2019/12/18*/public static boolean isEquals(Object value, Object... values) {boolean isTrue = false;if (value != null) {for (Object obj : values) {if (value instanceof Integer || value instanceof Long || value instanceof String) {isTrue = isTrue || value.equals(obj);}}}return isTrue;}/*** 分页** @param list     list* @param pageNum  当前页* @param pageSize 每页条数* @return java.util.List<T>* @author zhujx* @date 2020/1/8*/public static <T> List<T> getPage(List<T> list, int pageNum, int pageSize) {int total = list.size();int start = (pageNum - 1) * pageSize;int end = pageNum * pageSize;List<T> newList = new ArrayList<>();for (int i = start; i < (Math.min(end, total)); i++) {newList.add(list.get(i));}return newList;}/*** 去重** @param oldList 原数组* @param newList 新数组* @return java.util.List<T>* @author zhujx* @date 2020/2/15*/public static <T> List<T> removeList(List<T> oldList, List<T> newList) {List<T> list = new ArrayList<>();if (oldList.isEmpty() && newList.isEmpty()) {return list;} else if (oldList.isEmpty()) {return newList;} else if (newList.isEmpty()) {return list;} else {for (T newT : newList) {boolean isTrue = true;for (T t : oldList) {if (t.equals(newT)) {isTrue = false;break;}}if (isTrue) {list.add(newT);}}}return list;}/*** 18位身份证获取性别** @param idCard 身份证号码* @return java.lang.String* @author zhujx* @date 2020/7/10 10:21*/public static String getSexByIdCard(String idCard) {if (StringUtils.isBlank(idCard)) {return null;}if (Integer.parseInt(idCard.substring(16).substring(0, 1)) % 2 == 0) {return "女";} else {return "男";}}/*** 生日获取年龄** @param birth   年月日* @param pattern 格式 yyyy-MM-dd...* @return java.lang.Integer* @author zhujx* @date 2020/7/10 10:21*/public static Integer getAgeByBirth(String birth, String pattern) {if (StringUtils.isBlank(birth) || StringUtils.isBlank(pattern)) {return null;}SimpleDateFormat sdf = new SimpleDateFormat(pattern);Calendar cal = Calendar.getInstance();int yearNow = cal.get(Calendar.YEAR);int monthNow = cal.get(Calendar.MONTH);int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);try {Date birthDate = sdf.parse(birth);cal.setTime(birthDate);int yearBirth = cal.get(Calendar.YEAR);int monthBirth = cal.get(Calendar.MONTH);int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);int age = yearNow - yearBirth;if (monthNow <= monthBirth) {if (monthNow == monthBirth) {if (dayOfMonthNow < dayOfMonthBirth) {age--;}} else {age--;}}return age;} catch (ParseException e) {log.error("getAgeByBirth date error birth = {} ,pattern = {}", birth, pattern);return null;}}
}

个人总结的Java小工具类相关推荐

  1. java web 项目 常用 小工具类 ~~~~

    java web 项目 常用 小工具类 ~~~~ 一 .DateUtil  日期工具类 package com.devframe.common.util;import java.text.Simple ...

  2. java日期工具类DateUtil

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. DateUtil类 [java] view plain copy package com.util; ...

  3. Hutool Java常用工具类汇总

    简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的". Hu ...

  4. JAVA常用工具类(实用高效)

    JAVA常用工具类(根据GITHUB代码统计) 从Google你能搜索到大量的关于Struts,Spring,Hibernate,iBatis等比较大的框架的资料,但是很少有人去关注一些小的工具包,但 ...

  5. Java生成图片工具类

    Java生成图片工具类 最初版本(仅提供思路,生成时间长,根据自己的需要自己优化) package com.xhpc.charging.station.utils.img;import java.aw ...

  6. UrlUtils工具类,Java URL工具类,Java URL链接工具类

    UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...

  7. Java并发工具类(闭锁CountDownLatch)

    并发工具类系列: Java并发工具类(闭锁CountDownLatch) Java并发工具类(栅栏CyclicBarrier) Java并发工具类(信号量Semaphore) 闭锁是一种同步工具类,可 ...

  8. Java常用工具类StringUtils的常用方法

    Java常用工具类StringUtils的常用方法 1.该工具类是用于操作Java.lang.String类的. 2.StringUtils类在操作字符串是安全的,不会报空指针异常,也正因此,在操作字 ...

  9. 组织机构代码和统一社会信用代码校验规则以及java校验工具类

    组织机构代码 编码规则编辑 1.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成. 本体代码采用系列(即分区段)顺序编码方法. 校验码按照以下公式计算: C9 ...

最新文章

  1. 创建一个Scalar-valued Function函数来实现LastIndexOf
  2. 代码片段管理工具_VS代码片段:提高编码效率的最强大工具
  3. 数字图像处理1:基本概念
  4. 《python核心编程第二版》第5章习题
  5. androidsdktools安装_如何命令行安装Android SDK Build Tools(构建工具)?
  6. red hat enterprise linux 7关闭防火墙的方法
  7. ribbon hystrix仪表盘
  8. JWTToken在线编码生成
  9. 系统学习机器学习之线性判别式(三)--广义线性模型(Generalized Linear Models)
  10. 虚拟机安装系统 小计
  11. MySQL 入门(四)—— 数据库操作
  12. python将数据保存为pdf
  13. 一道经典的C++题,关于分钱的问题,适合新手阅读(黑客X档案论坛题目) [c#]
  14. 医院时钟系统(网络授时设备)设计方案
  15. python打开摄像头
  16. OpenHarmony通过MQTT远程控制鸿蒙小车
  17. 北大软微学院计算机金融方向考研,北大软微金服方向2016年考研经验贴---初试410分...
  18. XML中DTD,XSD的区别与应用
  19. 问题:Traceback (most recent call last): File “D:/xiangmu/python/test/test1.py“, line 100, in <module
  20. 用python编程小程序制作_Python编写四人24小时值班表生成小程序【简单粗暴】

热门文章

  1. open /run/flannel/subnet.env: no such file or directory
  2. Efforts should be valuable
  3. 渲染优化-从GPU的结构谈起
  4. 银行转账带来的死锁问题
  5. js 编写一个函数,计算任意两个数字之间所能组成的奇数个数
  6. Lua string转table
  7. [论文阅读]Using the Output Embedding to Improve Language Models
  8. ESP32连接校园网,第一次接触网络通信,写一篇博客记录一下学习笔记。
  9. 诗歌(11)—东栏梨花
  10. ECharts常用图例