Tool

  • 不定期更新,建议收藏,收录日常所用
    • 1,判断对象是否为空的常用工具类
    • 2,对象和数组的复制
    • 3,关于拼接字符串去掉最后一个符号的三种方式
    • 4,判断对象值属性不为null并且不为空字符串
    • 5,传入多个不同类型的对象,解析map对象
    • 6,判断对象属性值不为空并且不为null
    • 7,字符串拼接常用方式
    • 8,将字符串不是中文字符的都去掉
    • 9,去掉字符串的前后中括号[]
    • 10,将图片转换成Base64形式
    • 11,日期转string
    • 12,日期格式化转换
    • 13,判断两个数组是否存在相同的元素
    • 14,求一个数值的自然对数,与excel的LN函数等效
    • 15,截取集合
    • 16,解析时间格式为(Thu Mar 18 00:00:00 CST 2021)
    • 17,获取当前时间的前一天
    • 18,根据年份获取年份天数
    • 19,获取某年某月的天数
    • 20,从集合中取出某一个属性值的集合
    • 21,根据年月获取当前月份的天数(2021-02)
    • 22,对HashMap的key进行排序
    • 23,求出一组数中离目标值最近的一个数
    • 24,mysql清掉自增id,重新开始
    • 25,根据当前时间获取剩余天数
    • 26,筛选掉集合中不需要的数据
    • 27,java实现输入指定日期距离当前已过去多少时间
    • 28,控制台打印出JVM参数
    • 29,根据年月获取周六周日时间
    • 30,根据年月获取当月所有日期集合
    • 31,修改字符串某个位置的字符
    • 32,统计时间滑动平均值
    • 33,使用表达式,将文件内容中的小写字母替换成大写
    • 34,springboot定时任务类
    • 35,从集合中取出满足条件的一条或多条记录

不定期更新,建议收藏,收录日常所用

1,判断对象是否为空的常用工具类

CollectionUtils.isEmpty(集合)          // package org.spingframework.util;
Objects.nonNull(对象)                 // package java.util;

2,对象和数组的复制

 // 对象BeanUtils.copyProperties(数据源, 新对象);        // package org.springframework.beans;// 数组System.arraycopy(数组1,0,数组2,0,数组1长度)

3,关于拼接字符串去掉最后一个符号的三种方式

         StringBuffer sb = new StringBuffer();for (int i = 1; i < 5; i++) {sb.append(i).append(",");}if (sb.length() > 0){// 方式一  这种方式只是看到改后的结果System.out.println(sb.substring(0,sb.length()-1));// 方式二  这种方式不仅是看到改后结果,还自动进行了赋值System.out.println(sb.replace(sb.length()-1,sb.length(),""));// 方式三  这种方式不仅是看到改后结果,还自动进行了赋值System.out.println(sb.deleteCharAt(sb.length()-1));}

4,判断对象值属性不为null并且不为空字符串

  /*** 校验对象属性是否都为null* @param obj 对象* @return* @throws Exception*/public static boolean isAllFieldNull(Object obj){Class stuCla = (Class) obj.getClass();Field[] fs = stuCla.getDeclaredFields();boolean flag = true;for (Field f : fs) {f.setAccessible(true);Object val = null;try {val = f.get(obj);if(val!=null&&!"".equals(val)) {flag = false;break;}} catch (IllegalAccessException e) {e.printStackTrace();}}return flag;}

5,传入多个不同类型的对象,解析map对象

HashMap parseMap = JSON.parseObject(json, HashMap.class);
List<Student> studentList1 = (List<Student>) parseMap.get("studentList");
for(Student student : studentList1){ // ExceptionSystem.out.println(student.getId() + " ");
}@RequestMapping(value = "/saveOrUpdateActuary", method = RequestMethod.POST)@ApiOperation(value = "保存或更新精算模型数据")public FastResponse<Void> saveOrUpdateActuary(@RequestBody Map<String,Object> models,Long[] ids,@ModelAttribute ActuaryVersionReq actuaryVersionReq){String json1 = JSON.toJSONString(models.get("znjsRegionInfos"));String json2 = JSON.toJSONString(models.get("productFormInfos"));String json3 = JSON.toJSONString(models.get("cancerAttackInfos"));// 解析成List集合List<ZnjsRegionInfo> znjsRegionInfos = JSON.parseArray(json1, ZnjsRegionInfo.class);List<ProductFormInfo> productFormInfos = JSON.parseArray(json2, ProductFormInfo.class);List<CancerAttackInfo> cancerAttackInfos = JSON.parseArray(json3, CancerAttackInfo.class);znjsCityInfoService.saveOrUpdateCityInfo(znjsRegionInfos);productFormInfoService.saveOrUpdateProductFormInfo(productFormInfos);choosedDrugInfoService.saveChoosedDrugInfo(ids,actuaryVersionReq);cancerAttackInfoService.saveOrUpdateCancerAttackInfo(cancerAttackInfos);String result = netFeeInfoService.saveOrUpdateNetFeeInfo();return ResponseUtils.success(result);}

6,判断对象属性值不为空并且不为null

StrUtil.isNotBlank(对象属性值)        // cn.hutool.core.util.StrUtil;
StringUtils.isNoneBlank(对象属性值)  // org.apache.commons.lang3.StringUtils;

7,字符串拼接常用方式

+               // + 操作符是比较常用的,都熟悉
StringBuilder.append()  // 效率高,线程不安全
StringBuffer.append()   // 效率相对较低,线程安全
concat()      // String类的方法
Join()            // String类的方法
StringUtils.join    // org.apache.commons.lang3.StringUtils 该方法更善于拼接数组中的字符串,并且不用担心 NullPointerException。

8,将字符串不是中文字符的都去掉

String bankName = "中国银行(0001sdf)"
bankName.replaceAll("[^\u4E00-\u9FA5]", "")         // 结果:中国银行

9,去掉字符串的前后中括号[]

// import org.apache.commons.lang3.StringUtils;
String results = "[{"name":"username"}]"
String strip = StringUtils.strip(results, "[]"); // 结果: {"name":"username"}// 去除字符所有的[]中括号
String km = "[[2100, 2110], [3100]]";
String rest = km.replaceAll("\\[|\\]", "");  // 结果 2100, 2110, 3100

10,将图片转换成Base64形式

     // 图片地址String imgPath = "C:\\Users\\myqxin\\Desktop\\银行卡.jpg";InputStream in = null;byte[] data = null;try {in = new FileInputStream(imgPath);data =  new byte[in.available()];in.read(data);in.close();} catch (Exception e) {e.printStackTrace();}BASE64Encoder encoder = new BASE64Encoder();String encode = encoder.encode(data);System.out.println(encode);

11,日期转string

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;LocalDateTime now = LocalDateTime.now(); // 可以获取当前年,当前月的天数值String format = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

12,日期格式化转换

 Date date = new SimpleDateFormat("yyyy年MM月dd日").parse("2021年09月15日");String newDate = new SimpleDateFormat("yyyyMMdd").format(date);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String format = dateFormat.format(System.currentTimeMillis());String taskTime = "20201216T00";SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd'T'HH");Date date = sdf.parse(taskTime);SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String s = df.format(date);System.out.println("格式化后的时间" + s);  // 格式化后的时间2020-12-16 00:00:00

13,判断两个数组是否存在相同的元素

         String[] myqxin = {"77","22"};String[] arr = {"11","22","55"};HashSet<String> set = new HashSet<>(Arrays.asList(myqxin));set.retainAll(Arrays.asList(arr));if (set.size()>0){System.out.println(true);}

14,求一个数值的自然对数,与excel的LN函数等效

Math.log(13);

15,截取集合

// start,end分别是第几个到第几个,截取的内容包含前不包含结尾,用下标索引
// 此方法会改变原始list列表,返回的这个子列表的数据其实还是原列表的;也就是说,修改这个子列表,将导致原列表也发生改变
List<HSpecial> hps = hSpecialMapper.getHspecialsByOname(oname);
List<HSpecial> newHps = hps.subList(start, end);

16,解析时间格式为(Thu Mar 18 00:00:00 CST 2021)

     public static String myqxin(String timeStr){Preconditions.checkArgument(StringUtils.isNotBlank(timeStr),"时间参数不能为空");String pattern = "EEE MMM dd HH:mm:ss zzz yyyy";try {Date date = new SimpleDateFormat(pattern, Locale.US).parse(timeStr);return DateFormatUtils.format(date,"yyyy-MM-dd");} catch (ParseException e) {System.out.println("时间解析错误");}return null;}public static void main(String[] args) {String timeStr = "Thu Mar 18 00:00:00 CST 2021";System.err.println(myqxin(timeStr));}

17,获取当前时间的前一天

         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = new Date();Calendar now = Calendar.getInstance();now.setTime(date);now.add(Calendar.DAY_OF_MONTH,-1);System.err.println(sdf.format(now.getTime()));

18,根据年份获取年份天数

// import java.time.LocalDate;public static int getDayNumByYear(int year) {if (year == 0) {return LocalDate.now().lengthOfYear();} else {return LocalDate.of(year, 1, 1).lengthOfYear();}}

19,获取某年某月的天数

     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");Date date = sdf.parse("2021-01");Calendar calendar = Calendar.getInstance();calendar.setTime(date);int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);System.err.println(actualMaximum);

20,从集合中取出某一个属性值的集合

List<String> orderNoList=list.stream().map(Order::getOrderNo).collect(Collectors.toList());System.out.println("输出单号集合:"+orderNoList);

21,根据年月获取当前月份的天数(2021-02)

    /*** 根据年月获取天数  2021-02** @param timeStamp* @return*/public static int getDayNumByYearMonth(String timeStamp) {String[] split = timeStamp.split("-");Calendar c = Calendar.getInstance();c.set(Calendar.YEAR, Integer.parseInt(split[0]));c.set(Calendar.MONTH, Integer.parseInt(split[1]) - 1);return c.getActualMaximum(Calendar.DAY_OF_MONTH);}

22,对HashMap的key进行排序

 public static LinkedHashMap<String, List<AirQualityRankingResp>> mapSortedByKey(Map<String, List<AirQualityRankingResp>> param) {// 分组后根据key正序排列,()LinkedHashMap有序)LinkedHashMap<String, List<AirQualityRankingResp>> collect = param.entrySet().stream().sorted(new Comparator<Map.Entry<String, List<AirQualityRankingResp>>>() {@Overridepublic int compare(Map.Entry<String, List<AirQualityRankingResp>> o1, Map.Entry<String, List<AirQualityRankingResp>> o2) {try {Date d1 = new SimpleDateFormat("yyyy-MM").parse(o1.getKey());Date d2 = new SimpleDateFormat("yyyy-MM").parse(o2.getKey());return d1.compareTo(d2);} catch (Exception e) {e.printStackTrace();}return 0;}}).collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue,(oldVal, newVal) -> oldVal,LinkedHashMap::new));return collect;}

23,求出一组数中离目标值最近的一个数

   public static double getWind(double x) {double[] arr = {0.0, 22.5, 45, 67.5, 90, 112.5, 135, 167.5, 180, 202.5, 225, 247.5, 270, 292.5, 315, 337.5};double minDifference = Math.abs(arr[0] - x);int minIndex = 0;for (int i = 1; i < arr.length; i++) {double temp = Math.abs(arr[i] - x);if (temp < minDifference) {minIndex = i;minDifference = temp;}}return arr[minIndex];}

24,mysql清掉自增id,重新开始

#删除主键列
ALTER TABLE 表名 DROP 主键;   #添加主键列并设置为自增
ALTER TABLE 表名 ADD m_id INT(11) PRIMARY KEY AUTO_INCREMENT FIRST;

25,根据当前时间获取剩余天数

    /**** 根据当前日期(支持yyyy-MM-dd || yyyy-MM-dd HH:mm:ss格式)* 获取当年剩余天数* @param strDate* @return*/public static int getsyDayNumBydate(String strDate){if(strDate==null || strDate.isEmpty() || strDate.length()<10){return -1;}SimpleDateFormat sm = new SimpleDateFormat(strDate.length()>18?"yyyy-MM-dd HH:mm:ss":"yyyy-MM-dd");Date date=null;try{date=sm.parse(strDate);}catch(ParseException ex){ex.printStackTrace();return -1;}Calendar calendar = Calendar.getInstance();calendar.setTime(date);return calendar.getActualMaximum(Calendar.DAY_OF_YEAR) - calendar.get(Calendar.DAY_OF_YEAR);}

26,筛选掉集合中不需要的数据

  List<YrstHydrology> hydrologyList = list.stream().map(this::getMapData).filter(Objects::nonNull).collect(Collectors.toList());private YrstHydrology getMapData(YrstHydrology yrstHydrology) {if (StringUtils.isNotEmpty(yrstHydrology.getLongitude()) &&  StringUtils.isNotEmpty(yrstHydrology.getLatitude())) {List<String> list2 = new ArrayList<>();list2.add(yrstHydrology.getLongitude());list2.add(yrstHydrology.getLatitude());yrstHydrology.setLnglat(list2);yrstHydrology.setStyle(25);return yrstHydrology;}return null;}

27,java实现输入指定日期距离当前已过去多少时间

https://blog.csdn.net/qq_45752401/article/details/125644679?spm=1001.2014.3001.5502

28,控制台打印出JVM参数

 public static void main(String[] args) {Properties properties = System.getProperties();properties.list(System.out);}

29,根据年月获取周六周日时间

public static void main(String[] args) {System.err.println(getWeekend("2022-07"));}public static List getWeekend(String timeStamp) {List list = new ArrayList();String[] split = timeStamp.split("-");String year = split[0];String month = split[1];Calendar calendar = Calendar.getInstance();calendar.set(Calendar.YEAR, Integer.parseInt(year));calendar.set(Calendar.MONTH, Integer.parseInt(month) - 1);// 设置为当月第一天calendar.set(Calendar.DAY_OF_MONTH, 1);// 当月最大天数int daySize = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);for (int i = 0; i < daySize - 1; i++) {String days = "";//在第一天的基础上加1calendar.add(Calendar.DATE, 1);int week = calendar.get(Calendar.DAY_OF_WEEK);// 1代表周日,7代表周六 判断这是一个星期的第几天从而判断是否是周末if (week == Calendar.SATURDAY || week == Calendar.SUNDAY) {int ct = calendar.get(Calendar.DAY_OF_MONTH);if (ct < 10) {days = "0" + ct;} else {days = String.valueOf(ct);}// 得到当天是一个月的第几天list.add(year + "-" + month + "-" + days);}}return list;}

30,根据年月获取当月所有日期集合

   public static void main(String[] args) {System.err.println(getMonthDate("2022-07"));}public static List getMonthDate(String timeStamp){List list = new ArrayList();String[] split = timeStamp.split("-");String year = split[0];String month = split[1];Calendar calendar = Calendar.getInstance();calendar.set(Calendar.YEAR, Integer.parseInt(year));calendar.set(Calendar.MONTH, Integer.parseInt(month) - 1);int day = calendar.getActualMaximum(Calendar.DATE);for (int i = 1; i <= day; i++) {String days = "";if (i<10){days = "0"+i;}else {days = String.valueOf(i);}String aDate = year+"-"+month+"-"+days;list.add(aDate);}return list;}

31,修改字符串某个位置的字符

    public static void main(String[] args) {String aa = "2022-07-23 23:00:00";System.err.println(aa.substring(11,13));StringBuilder sb = new StringBuilder(aa);sb.replace(11,13,"24");System.err.println(sb.toString());}

32,统计时间滑动平均值

需求说明:现在有某一天24小时的数据,但我要计算每八小时统计一次数据结果(平均,和,最大值等)。不是24/8哦,是滑动八小时(就是有0到23点,总共一天24小时的数据。分成这样的形式(0-7、1-8、2-9、3-10、。。。。、16-23),总共17份)。代码实现如下:

/*** @author: myqxin* @Desc:* @create: 2022-07-22 14:24**/
public class Myqxin {public static void main(String[] args) {List<User> data = getData();for (User datum : data) {System.err.println(datum);}// 每隔多少滑动int f = 8;// 统计滑动ArrayList<List<User>> slide = new ArrayList<>();// 统计滑动最大的的一个ArrayList<Double> max = new ArrayList<Double>();int j = 0;if (j + f <= data.size()) {for (; j + f <= data.size(); j++) {List<User> subList = data.subList(j, j + f);slide.add(subList);}} else {List<User> subList = data.subList(j, data.size());slide.add(subList);}for (int i = 0; i < slide.size(); i++) {double listAvg = slide.get(i).stream().mapToInt(User::getValue).average().getAsDouble();max.add(listAvg);}for (Double aDouble : max) {System.out.println(aDouble);}}public static List<User> getData(){ArrayList<User> list = new ArrayList<>();for (int i = 0; i < 24; i++) {String str = "";if (i<10){str = "0"+i;}else {str = i+"";}list.add(new User("00"+(i+1),"2022-07-22 "+str+":00:00",new Random().nextInt(9)+1));}return list;}
}

33,使用表达式,将文件内容中的小写字母替换成大写

// 搜索小写字母s
"s(\d+)"
// 替换成大写S
"S$1"

34,springboot定时任务类

     @Autowiredprivate ThreadPoolTaskScheduler threadPoolTaskScheduler;@Autowiredprivate void getHourDate(){threadPoolTaskScheduler.schedule(()-> System.out.println("sss"),new CronTrigger("* * * * * *"));}

35,从集合中取出满足条件的一条或多条记录

  List<PStep> list = stepService.list(wrapper);// 取满足条件的多条记录List<Integer> w = list.stream().filter((item) -> item.getPStep().startsWith("W")).map(item -> {return Integer.valueOf(item.getPStep().substring(1));}).collect(Collectors.toList());PStep t = list.stream().filter(item -> item.getPStep().startsWith("T")).findAny().orElse(null);

java中常用到的工具类使用相关推荐

  1. java中常用的日期工具类

    java中常用的日期工具类 日期相关的类: package net.yto.ofclacct.core.util;import java.text.ParseException; import jav ...

  2. java中常用的并发工具类

    · 1. 等待多线程完成的CountDownLatch 构造函数接收一个int类型的参数作为计数器,如果想等待N个点,就传入N.当调用CountDownLatch的countDown方法时,N就会减一 ...

  3. java中常用的加密工具

    java中常用的加密工具 1. md5加密工具类 public class MD5Utils {private static final String hexDigIts[] = {"0&q ...

  4. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

  5. java中定义一个CloneUtil 工具类

    其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...

  6. java中常用API、Scanner类、匿名对象、Random类、ArrayList类、对象数组

    java中常用API: API:Application Programming Interface,应用程序编程接口.Java API是JDK中提供给我们使用的类的说明文档.这些类将底层的代码实现封装 ...

  7. java常用工具类_java(二):工作中常用到的工具类

    工作中大家要用到很多工具类,第三方的jar中有很多现成的工具类符合自己的项目需要,这个时候就不需要去重复造轮子了,从而节省了很多时间,大家可以利用这些时间去做其它重要的事情,如果没有符合自己的工具类, ...

  8. Java中操作字符串的工具类-判空、截取、格式化、转换驼峰、转集合和list、是否包含

    场景 某些常用的对字符串进行处理的方法抽离出来成工具类,方便在多处应用. 常用的操作为: 判断是否为空 截取字符串 格式化文本 字符串转set 字符串转list 下划线转驼峰命名 是否包含字符串 注: ...

  9. Java中常用的 JSON工具

    Spring Cloud 2.x系列之网关zuul入门(三) Spring Cloud 2.x系列之网关zuul入门(二) 本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能. 每次都在 ...

最新文章

  1. JDK与JRE的关系和path的作用浅谈
  2. 浏览器更改实现webstrom等前端编辑器的同步更新
  3. win7 64位系统oracle客户端访问远程数据库
  4. android中SimpleAdapter、ArrayAdapter的用法以及继承了ListActivity的设置适配器的方法...
  5. Java 实现 HTTP 请求的三种方式
  6. Eclipse中新建jsp提示The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path
  7. pythonfor循环语句例题_python循环语句的使用练习题
  8. 慌的一批!新手妹子一个命令把公司服务器数据删没了...
  9. JUnit 4和JUnit 5区别
  10. [cb]SceneView 获取鼠标位置
  11. 【转】Android虚拟平台的编译和整合
  12. Spark灰度发布在十万级节点上的实践
  13. sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第二部分
  14. python微信集成_python+微信+腾讯智能闲聊
  15. jQuery的加法运算,val()获取的结果相加变成了字符串连接。
  16. 小红伞杀毒软件(德国的) 完全免费的 FREE
  17. python ansible
  18. 移动开发者如何获取免费流量
  19. Jupyter notebook 配置无问题 但就是无法远程访问,解决方法
  20. 【精】EOS智能合约:system系统合约源码分析

热门文章

  1. python利用opencv去除图片logo_python 基于opencv去除图片阴影
  2. 科技赋能数字未来,为企业搭建数智化场景,构建数字生态
  3. springBoot上传文件大小受限制的解决方案
  4. 《王者荣耀》2亿用户量的背后:产品定位、技术架构、网络方案等
  5. iOS Swift 判断手机机型 已更新 至iPhone12
  6. 云鹏个人理财工具0.5版说明书-电子表格的点评
  7. python占位符怎么使用
  8. 什么是User Story
  9. shell 调用securecrt_Linux下的SecureCRT/XShell替代工具
  10. Linux display driver 分析之 fb_find_mode函数