天天看點

java小知識

1.擷取當天23:59:59時間

Calendar calendar2 = Calendar.getInstance();
		calendar2.set(calendar2.get(Calendar.YEAR), calendar2.get(Calendar.MONTH), calendar2.get(Calendar.DAY_OF_MONTH),
		        23, 59, 59);
		Date endOfDate = calendar2.getTime();
		SimpleDateFormat SDF= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String format = SDF.format(endOfDate);
		System.out.println(format);
           

2.【cron表達式裝換成時間格式】

package web.cron;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.quartz.CronExpression;
	public class CronExpParser {

	    /**
	     * @方法名:parser
	     * @方法描述【cron表達式裝換成時間格式】
	     * @param cronExpression   cron表達式
	     * @return
	     * @修改描述【修改描述】
	     * @版本:1.0
	     * @建立人:Administrator
	     * @建立時間:2018年8月17日 下午2:46:43
	     * @修改人:Administrator
	     * @修改時間:2018年8月17日 下午2:46:43
	     */
	    public static List<String> parser(String cronExpression) {
	        List<String> result = new ArrayList<String>();
	        if (cronExpression == null || cronExpression.length() < 1) {
	            return result;
	        } else {
	            CronExpression exp = null;
	            try {
	                exp = new CronExpression(cronExpression);
	            } catch (ParseException e) {
	                e.printStackTrace();
	                return result;
	            }
	            Calendar calendar = Calendar.getInstance();
	            String cronDate = calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DATE);
	            String sStart = cronDate + " 00:00:00";
	            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	            Date dStart = null;
	            Date dEnd = null;
	            try {
	                dStart = sdf.parse(sStart);
	                calendar.setTime(dStart);
	                calendar.add(Calendar.DATE, 1);
	                dEnd = calendar.getTime();
	            } catch (ParseException e) {
	                e.printStackTrace();
	            }
	            Date dd = new Date();
	            dd = exp.getNextValidTimeAfter(dd);
	            while (dd.getTime() < dEnd.getTime()) {
	                result.add(sdf.format(dd));
	                dd = exp.getNextValidTimeAfter(dd);
	            }
	            exp = null;
	            
	        }
	        return result;
	    }

	    public static void main(String[] args) {
	        String CRON_EXPRESSION = "0/30 * * * * ? *";
	        System.out.println(CRON_EXPRESSION);
	        List<String> lTime = new ArrayList<String>();
	        lTime = CronExpParser.parser(CRON_EXPRESSION);
	        for (int i = 0; i < lTime.size(); i++) {
	            System.out.println(lTime.get(i));
	        }

	    }
	   
	}
           

結果為:如下圖:

java小知識

3.java 時間轉換Tue, 29 Jan 2019 09:26:29 GMT轉換為 (标準時間)時間格式轉換

package web.String;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo8 {
	public static void main(String[] args) {
		String time = "Tue, 29 Jan 2019 09:26:29 GMT";
        Date date = new Date(time);
        SimpleDateFormat dateformat1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        time=dateformat1.format(date);
        System.out.println(time);
		
	}
}

           

結果如圖:

java小知識

4.随機生成字元串以及随機抽取字元串

package web.suiji;
import java.util.Random;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class RandomUtil {
		public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		public static final String LETTERCHAR = "abcdefghijkllmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		public static final String NUMBERCHAR = "0123456789";

		/**
		 * 傳回一個定長的随機字元串(隻包含大小寫字母、數字)
		 * 
		 * @param length
		 *            随機字元串長度
		 * @return 随機字元串
		 */
		public static String generateString(int length) {
			StringBuffer sb = new StringBuffer();
			Random random = new Random();
			for (int i = 0; i < length; i++) {
				sb.append(ALLCHAR.charAt(random.nextInt(ALLCHAR.length())));
			}
			return sb.toString();
		}

		/**
		 * 傳回一個定長的随機純字母字元串(隻包含大小寫字母)
		 * 
		 * @param length
		 *            随機字元串長度
		 * @return 随機字元串
		 */
		public static String generateMixString(int length) {
			StringBuffer sb = new StringBuffer();
			Random random = new Random();
			for (int i = 0; i < length; i++) {
				sb.append(ALLCHAR.charAt(random.nextInt(LETTERCHAR.length())));
			}
			return sb.toString();
		}

		/**
		 * 傳回一個定長的随機純大寫字母字元串(隻包含大小寫字母)
		 * 
		 * @param length
		 *            随機字元串長度
		 * @return 随機字元串
		 */
		public static String generateLowerString(int length) {
			return generateMixString(length).toLowerCase();
		}

		/**
		 * 傳回一個定長的随機純小寫字母字元串(隻包含大小寫字母)
		 * 
		 * @param length
		 *            随機字元串長度
		 * @return 随機字元串
		 */
		public static String generateUpperString(int length) {
			return generateMixString(length).toUpperCase();
		}

		/**
		 * 生成一個定長的純0字元串
		 * 
		 * @param length
		 *            字元串長度
		 * @return 純0字元串
		 */
		public static String generateZeroString(int length) {
			StringBuffer sb = new StringBuffer();
			for (int i = 0; i < length; i++) {
				sb.append('0');
			}
			return sb.toString();
		}

		/**
		 * 根據數字生成一個定長的字元串,長度不夠前面補0
		 * 
		 * @param num
		 *            數字
		 * @param fixdlenth
		 *            字元串長度
		 * @return 定長的字元串
		 */
		public static String toFixdLengthString(long num, int fixdlenth) {
			StringBuffer sb = new StringBuffer();
			String strNum = String.valueOf(num);
			if (fixdlenth - strNum.length() >= 0) {
				sb.append(generateZeroString(fixdlenth - strNum.length()));
			} else {
				throw new RuntimeException("将數字" + num + "轉化為長度為" + fixdlenth
						+ "的字元串發生異常!");
			}
			sb.append(strNum);
			return sb.toString();
		}

		/**
		 * 每次生成的len位數都不相同
		 * 
		 * @param param
		 * @return 定長的數字
		 */
		public static int getNotSimple(int[] param, int len) {
			Random rand = new Random();
			for (int i = param.length; i > 1; i--) {
				int index = rand.nextInt(i);
				int tmp = param[index];
				param[index] = param[i - 1];
				param[i - 1] = tmp;
			}
			int result = 0;
			for (int i = 0; i < len; i++) {
				result = result * 10 + param[i];
			}
			return result;
		}

		/**
		 * 随機生成字元串(隻有字母和數字)
		 * @param args
		 */
		/*public static void main(String[] args) {
			System.out.println("傳回一個定長的随機字元串(隻包含大小寫字母、數字):" + generateString(10));
			System.out
					.println("傳回一個定長的随機純字母字元串(隻包含大小寫字母):" + generateMixString(10));
			System.out.println("傳回一個定長的随機純大寫字母字元串(隻包含大小寫字母):"
					+ generateLowerString(10));
			System.out.println("傳回一個定長的随機純小寫字母字元串(隻包含大小寫字母):"
					+ generateUpperString(10));
			System.out.println("生成一個定長的純0字元串:" + generateZeroString(10));
			System.out.println("根據數字生成一個定長的字元串,長度不夠前面補0:"
					+ toFixdLengthString(123, 10));
			int[] in = { 1, 2, 3, 4, 5, 6, 7 };
			System.out.println("每次生成的len位數都不相同:" + getNotSimple(in, 3));
		}*/
		
		

		/**
		 * java示範倒計時
		 * 
		 */
		    public static int time = 5;
		    public static Calendar c;
		    public static long endTime;
		    public static Date date;
		    public static long startTime;
		    public static long midTime;
		
		/**
		 * 抽取指定姓名中的名字
		 * @param args
		 */
		public static void main(String[] args) {
			   c = Calendar.getInstance();
		        c.set(2017, 4, 17, 0, 0, 0);// 注意月份的設定,0-11表示1-12月
		        // c.set(Calendar.YEAR, 2017);
		        // c.set(Calendar.MONTH, 4);
		        // c.set(Calendar.DAY_OF_MONTH, 17);
		        // c.set(Calendar.HOUR_OF_DAY, 0);
		        // c.set(Calendar.MINUTE, 0);
		        // c.set(Calendar.SECOND, 0);
		        endTime = c.getTimeInMillis();
		        date = new Date();
		        startTime = date.getTime();
		        midTime = (endTime - startTime) / 1000;

		        time1();//方式一
		        //time2();// 方式二
		        // time3();//方式三
			
			//定義人名數組
			String [] name = {"張三","李四","王五","八神庵","不知火舞","大蛇","景天","唐雪見","李逍遙","趙靈兒"};
			//随機生成數組下标、
			int num = (int)(Math.random() * 1000);
			//對生成的随機數進行判斷,如果小于數組下标,就跳出循環
			while (num>name.length-1) {
				if (num<=name.length-1) {
			break;
			}
			num = (int)(Math.random() * 1000);
			}
			//将數組下标設定成随機數,就可以實作人名的随機抽取
			System.out.println("被抽到的同學是:"+name[num]);
			}
		   // public static void main(String[] args) {
		     
		  //  }

		    /**
		     * 方式一: 給定時長倒計時
		     */
		    private static void time1() {
		        while (time > 0) {
		            time--;
		            try {
		                Thread.sleep(1000);
		                int hh = time / 60 / 60 % 60;
		                int mm = time / 60 % 60;
		                int ss = time % 60;
		                System.out.println("還剩" + hh + "小時" + mm + "分鐘" + ss + "秒");
		            } catch (InterruptedException e) {
		                e.printStackTrace();
		            }
		        }

		}
		    
		    
} 


           

5.查詢集合中不連續的數的個數

package web.zizeng;

import java.util.ArrayList;
import java.util.List;

public class Zizeng {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		List<Integer> list4 = new ArrayList<Integer>();
		/*list.add(65529);
		list.add(1);
	*/
		//list.add(65515);//16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
		/*list.add(65531);
		list.add(65532);
		list.add(65533);*/
		list.add(65534);
		list.add(65535);
		list.add(1);
		list.add(2);
		list.add(3);//缺少4,5,6,7,8,9
		list.add(10);
		list.add(11);
		
		Integer sum = 0;
		Integer integer = 0;
		
		//找出該傳感器的delection_time的集合中不連續的數有多少個
		for (int i = 0; i < list.size()-1; i++) {
			if (list.get(i) < 65535 && (list.get(i + 1)) > (list.get(i))) {
				if ((list.get(i + 1)) - (list.get(i)) == 1) {
					// 連續的數
					continue;
				}
				int a = list.get(i + 1);
				int b = list.get(i);
				if ((a - b) != 1) {
					// 不連續的數
					int c = (a - b) - 1;
					sum = sum + c;
					list4.add(sum);
				}
				// 擷取list1集合中最後一個元素:==總的不連續的個數
				integer = list4.get(list4.size() - 1);
			}

			if ((list.get(i + 1)) < (list.get(i))) {
				if ((list.get(i + 1)) - (list.get(i)) == -65534) {
					// 進入該判斷說明是連續的
					continue;
				} else {
						int a = list.get(i + 1);
						int b = list.get(i);
						// 不連續的數
						int c = (b - a);
						int x = 65535 - c - 1;
						sum = sum + x;
						list4.add(sum);
				}
				// 擷取list1集合中最後一個元素:==總的不連續的個數
				integer = list4.get(list4.size() - 1);
			}
			if (list.get(i) == 65535) {
				continue;
			}
		}
		//輸出最後一個元素
		System.out.println(integer);
		
		/*for (Integer in : list4) {
			System.out.println(in);
		}*/
	}

}

           

6.檔案上傳Controller執行個體:

package web.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import web.mapping.student;
import web.service.SecondService;

import javax.servlet.http.HttpServletRequest;

import java.io.File;
import java.io.IOException;
@Controller
@RequestMapping("/second")
public class UplodesController {
	    @Autowired
	    private SecondService secondservice;

	    //二級标題釋出
	    @RequestMapping(value = "/secondsave",method = RequestMethod.POST)
	    public String secondsave(@RequestParam(value = "file1") MultipartFile file, HttpServletRequest request, student second) {

	        try {
	        	request.setAttribute("files", file);
	            //上傳後的位址,注意("/upload")是表示檔案上傳後的目标檔案夾
	            String realPath = request.getSession().getServletContext().getRealPath("/uplode");
	            System.out.println("列印檔案上傳的路徑"+realPath);
	            //擷取檔案名
	            String filename = file.getOriginalFilename();
	            //擷取檔案字尾名
	            String extensionname = filename.substring(filename.lastIndexOf(".") + 1);
	            //給上傳的檔案起别名,有很多種方式

	            String newFilename=String.valueOf(System.currentTimeMillis())+"."+extensionname;

	            //建立File對象,傳入目标路徑參數,和新的檔案别名

	            File dir=new File(realPath,newFilename);

	            if (!dir.exists()){//如果dir代表的檔案不存在,則建立它,

	                dir.mkdirs();//

	            }

	            //如果存在則直接執行下面操作

	            file.transferTo(dir);//将上傳的實體檔案複制到指定目錄upload下

	            second.setTupian(newFilename);//将檔案名指派給實體類,然後一并存到資料庫

	            secondservice.secondSave(second);//調用背景方法,将對象存進資料庫

	            System.out.println("測試是否執行完畢");
	            request.setAttribute("files1", realPath);

	        } catch (IOException e) {

	            e.printStackTrace();
	        }
	        return "succes.jsp";//執行完畢,傳回一個邏輯視圖

	      }
	}

           

7.集合排序

a. 當List集合中是List/List類型時,我們直接用 Collections.sort(list);

b.當List集合中是List<對象>時,我們要對對象中的某一個元素進行排序,如下:

Collections.sort(list, new Comparator<對象>() {
     public int compare(對象 o1, 對象 o2) {
       return o2.get屬性.compareTo(o1.get屬性());
     }});
           

c.對map集合進行排序:

Map<String, String> map = new TreeMap<String, String>(
                new Comparator<String>() {
                    public int compare(String obj1, String obj2) {
                        // 降序排序
                        return obj2.compareTo(obj1);
                    }});
           

繼續閱讀