Java基础:
List转Map集合:
/** * 将List转为Map * * @param list 原数据 * @param keyExtractor Key的抽取规则 * @param <K> Key * @param <V> Value * @return */ public static <K, V> Map<K, V> listToMap(List<V> list, Function<V, K> keyExtractor) { /*等于空就直接返回空的map*/ if (list == null || list.isEmpty()) { return new HashMap<>(); } Map<K, V> map = new HashMap<>(list.size()); for (V element : list) { /*设置map的K为list的值*/ K key = keyExtractor.apply(element); if (key == null) { continue; } /*设置map的V为list的值*/ map.put(key, element); } return map; }
使用:
1 public static void main(String[] args) { 2 // 1.创建List集合 3 List<? extends Serializable> list = new ArrayList<>(Arrays.asList(1, 2, 42, "23")); 4 // 2.调用方法将list集合转map集合 5 Map<? extends Serializable, ? extends Serializable> map = listToMap(list, Function.identity()); 6 // 3.遍历map集合 7 Set<? extends Map.Entry<? extends Serializable, ? extends Serializable>> entries = map.entrySet(); 8 entries.forEach(System.out::println); 9 }
输出:
封装好的日期时间类
package com.mixky.mobile.policy.util; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import com.mixky.toolkit.DateUtil; public class DateFormatUtil { public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * 格式化结束日期,并加一天 * @param endtime * @return */ public static String formatEndDate(String endtime){ Date endDate=DateUtil.parseDate(endtime, "yyyy-MM-dd"); Calendar c = Calendar.getInstance(); c.setTime(endDate); c.add(Calendar.DAY_OF_MONTH, 1);// 今天+1天 String endDateStr=DateUtil.format(c.getTime(), "yyyy-MM-dd"); return endDateStr; } /** * 格式化结束日期 不做任何处理 * @param endtime * @return */ public static String formatEndDateNow(String endtime){ Date endDate=DateUtil.parseDate(endtime, "yyyy-MM-dd"); Calendar c = Calendar.getInstance(); c.setTime(endDate); //c.add(Calendar.DAY_OF_MONTH, 1);// 今天+1天 String endDateStr=DateUtil.format(c.getTime(), "yyyy-MM-dd"); return endDateStr; } /** * 日期加/减**天 * @param date * @param day * @return */ public static String formateDateHandleDay(String date, int day){ Date endDate=DateUtil.parseDate(date, "yyyy-MM-dd"); Calendar c = Calendar.getInstance(); c.setTime(endDate); c.add(Calendar.DAY_OF_MONTH, day); String endDateStr=DateUtil.format(c.getTime(), "yyyy-MM-dd"); return endDateStr; } /** * 日期加/减**月 * @param date * @param month * @return */ public static String formateDateHandleMonth(String date, int month, String formate){ Date endDate=DateUtil.parseDate(date, formate); Calendar c = Calendar.getInstance(); c.setTime(endDate); c.add(Calendar.MONTH, month); String endDateStr=DateUtil.format(c.getTime(), formate); return endDateStr; } /** * 日期加/减**年 * @param date * @param year * @return */ public static String formateDateHandleYear(String date, int year){ Date endDate=DateUtil.parseDate(date, "yyyy"); Calendar c = Calendar.getInstance(); c.setTime(endDate); c.add(Calendar.YEAR, year); String endDateStr=DateUtil.format(c.getTime(), "yyyy"); return endDateStr; } /** * 获取当前月的第一天 * @return */ public static String formateDateFirstDay(){ Calendar cale = Calendar.getInstance(); String firstday; //获取前月的第一天 cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 0); cale.set(Calendar.DAY_OF_MONTH, 1); //将小时至0 cale.set(Calendar.HOUR_OF_DAY, 0); //将分钟至0 cale.set(Calendar.MINUTE, 0); //将秒至0 cale.set(Calendar.SECOND,0); //将毫秒至0 cale.set(Calendar.MILLISECOND, 0); firstday = sdf.format(cale.getTime()); return firstday; } /** * 获取当前月的最后一天 * @return */ public static String formateDateLastDay(){ Calendar cale = Calendar.getInstance(); String lastday; //获取前月的最后一天 cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 1); cale.set(Calendar.DAY_OF_MONTH, 0); //将小时至23 cale.set(Calendar.HOUR_OF_DAY, 23); //将分钟至59 cale.set(Calendar.MINUTE, 59); //将秒至59 cale.set(Calendar.SECOND,59); //将毫秒至59 cale.set(Calendar.MILLISECOND, 59); lastday = sdf.format(cale.getTime()); return lastday; } //获取当前月的天数 public static int getDayOfMonth(){ Calendar aCalendar = Calendar.getInstance(Locale.CHINA); int day=aCalendar.getActualMaximum(Calendar.DATE); return day; } //获取当天凌晨0点0分0秒Date public Date getZeroOfDay(){ Calendar calendar = Calendar.getInstance(); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); Date beginOfDate = calendar.getTime(); return beginOfDate; } //获取当天23点59分59秒Date public static Date getLastOfDay(){ Calendar calendar = Calendar.getInstance(); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59); Date endOfDate = calendar.getTime(); return endOfDate ; } /** * 获取当前时间的前一天同一时间 * */ private String getBeforeDay() { Calendar calendar = Calendar.getInstance(); int dd2 = calendar.get(Calendar.DATE); calendar.set(Calendar.DATE, dd2 - 1); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59); String beforeDay = sdf.format(calendar.getTime()); return beforeDay; } /** * 获取当前时间的后一天同一时间 * */ private String getAfterDay() { Calendar calendar = Calendar.getInstance(); int dd2 = calendar.get(Calendar.DATE); calendar.set(Calendar.DATE, dd2 + 1); String afterDay = sdf.format(calendar.getTime()); return afterDay; } /** * 获取当前时间的前一天0点0分0秒 * */ public String getZeroOfBeforeDay() { Calendar calendar = Calendar.getInstance(); int dd2 = calendar.get(Calendar.DATE); calendar.set(Calendar.DATE, dd2 - 1); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); String beforeDay = sdf.format(calendar.getTime()); return beforeDay; } /** * 获取当前时间的前一天23点59分59秒 * */ public String getLastOfBeforeDay() { Calendar calendar = Calendar.getInstance(); int dd2 = calendar.get(Calendar.DATE); calendar.set(Calendar.DATE, dd2 - 1); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59); String beforeDay = sdf.format(calendar.getTime()); return beforeDay; } /** * 获取当前时间后一天0点0分0秒 * */ private String getZeroOfAfterDay() { Calendar calendar = Calendar.getInstance(); int dd2 = calendar.get(Calendar.DATE); calendar.set(Calendar.DATE, dd2 + 1); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); String afterDay = sdf.format(calendar.getTime()); return afterDay; } /** * 获取当前时间后一天23点59分59秒 * */ private String getLastOfAfterDay() { Calendar calendar = Calendar.getInstance(); int dd2 = calendar.get(Calendar.DATE); calendar.set(Calendar.DATE, dd2 + 1); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59); String afterDay = sdf.format(calendar.getTime()); return afterDay; } /** * 获取当前月的第count天0分0秒0分 * @return */ public String getZeroOfDays(int count){ Calendar cale = Calendar.getInstance(); //获取前月的第一天 cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 0); cale.set(Calendar.DAY_OF_MONTH, 1); int dd2 = cale.get(Calendar.DATE); cale.set(Calendar.DATE, dd2 + count); cale.set(cale.get(Calendar.YEAR), cale.get(Calendar.MONTH), cale.get(Calendar.DAY_OF_MONTH), 0, 0, 0); String day = sdf.format(cale.getTime()); return day; } /** * 获取当前月的第count天23分59秒59分 * @return */ public String getLastOfDays(int count){ Calendar cale = Calendar.getInstance(); //获取前月的第一天 cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 0); cale.set(Calendar.DAY_OF_MONTH, 1); int dd2 = cale.get(Calendar.DATE); cale.set(Calendar.DATE, dd2 + count); cale.set(cale.get(Calendar.YEAR), cale.get(Calendar.MONTH), cale.get(Calendar.DAY_OF_MONTH), 23, 59, 59); String day = sdf.format(cale.getTime()); return day; } /** * 获取当前月的第count天 * @return */ public static Date getDays(int count){ Calendar cale = Calendar.getInstance(); //获取前月的第一天 cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 0); cale.set(Calendar.DAY_OF_MONTH, 1); int dd2 = cale.get(Calendar.DATE); cale.set(Calendar.DATE, dd2 + count); Date date = cale.getTime(); return date; } /** * 获取当前时间的前一月同一时间 * */ public static String getBeforeMonth(Date date) { Calendar calendar = Calendar.getInstance(); //过去一月 calendar.setTime(date); calendar.add(Calendar.MONTH, -1); Date m = calendar.getTime(); String mon = sdf.format(m); return mon; } /** * 获取上个月的第一天 * @return */ public static String getBeforeMonthFirstDay(){ Calendar cale = Calendar.getInstance(); String firstday; //获取上个月的第一天 cale = Calendar.getInstance(); cale.add(Calendar.MONTH, -1); cale.set(Calendar.DAY_OF_MONTH, 1); //将小时至0 cale.set(Calendar.HOUR_OF_DAY, 0); //将分钟至0 cale.set(Calendar.MINUTE, 0); //将秒至0 cale.set(Calendar.SECOND,0); //将毫秒至0 cale.set(Calendar.MILLISECOND, 0); firstday = sdf.format(cale.getTime()); return firstday; } /** * 获取下个月的最后一天 * @return */ public static String getBeforeMonthLastDay(){ Calendar cale = Calendar.getInstance(); String lastday; //获取下个月的最后一天 cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 0); cale.set(Calendar.DAY_OF_MONTH, 0); //将小时至23 cale.set(Calendar.HOUR_OF_DAY, 23); //将分钟至59 cale.set(Calendar.MINUTE, 59); //将秒至59 cale.set(Calendar.SECOND,59); //将毫秒至59 cale.set(Calendar.MILLISECOND, 59); lastday = sdf.format(cale.getTime()); return lastday; } }
正确停止一个线程:
终止一个线程可以调用线程的stop方法,但是stop这个方法会强行终止,没有保存的数据将会丢失,实际开发中一般会采用boolean标记的方式进行终止:
public class FileDemo { static boolean flag = false; public static void setFlag(boolean flag) { FileDemo.flag = flag; } public static void main(String[] args) throws InterruptedException { final Thread t1 = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 10; i++) { if (flag) { return; } System.out.println(Thread.currentThread().getName() + "==》" + i); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }, "t1"); t1.start(); Thread.sleep(5000); /*5S后终止线程*/ setFlag(true); } }
正则匹配IP的合法性
/** * 判断IP地址的合法性,这里采用了正则表达式的方法来判断 * return true,合法 */ public static boolean ipCheck(String text) { if (text != null && !text.isEmpty()) { // 定义正则表达式 String regex = "^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\." + "(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\." + "(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\." + "(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$"; // 判断ip地址是否与正则表达式匹配 if (text.matches(regex)) { // 返回判断信息 return true; } else { // 返回判断信息 return false; } } return false; }