转载请注明出处: http://renjie120.iteye.com/
1.java中的数组和list的排序,反序,以及互换问题
public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("6"); list.add("5"); list.add("3"); list.add("1"); list.add("2"); list.add("4"); Collections.sort(list); Collections.reverse(list); String[] str = list.toArray(new String[list.size()]); // 不转型也可以通过 //下面的是多余的类型转换!! String[] str2 = (String[])list.toArray(new String[list.size()]); List list3 = Arrays.asList(str); //数组转换成list; //Arrays.sort(str); list 有 正排序和 反排序 Arrays 只有正排序 for (int i=0;i<str.length;i++){ System.out.println("list->"+i+":"+str[i]); } for (int i=0;i<list3.size();i++){ System.out.println("list->"+i+":"+list3.get(i)); } }
2.日期相关函数:
package test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class DateTool { /** * 返回日期格式.默认是'yyyy-MM-dd'. * * @param date * @return */ public static String toString(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(date); } //在指定日期间隔的天数 public static String afterToday(Date dd,int days) { Date d = afterAnyDay(dd, days); GregorianCalendar ca = new GregorianCalendar(); ca.setTime(d); int y = ca.get(Calendar.YEAR); int m = ca.get(Calendar.MONTH); int ddd = ca.get(Calendar.DAY_OF_MONTH); return new StringBuilder().append(y).append("-").append(m + 1) .append("-").append(ddd).toString(); } //指定日期之后的任意一天 public static Date afterAnyDay(Date date, int days) { if (date == null) return null; Date newDate = new Date(); long tp = date.getTime(); tp = tp + days * ONEDAYMILLISECONDS; newDate.setTime(tp); return newDate; } public static Date getDate(String dateStr, String formateStr) { SimpleDateFormat formatter2 = new SimpleDateFormat(formateStr); Date date = new Date(); try { date = formatter2.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 返回指定日期格式的字符串 * * @param formate * @return */ public static String toString(Date date, String formate) { SimpleDateFormat sdf = new SimpleDateFormat(formate); return sdf.format(date); } /** * 得到指定年份,月份,第几天的date对象. * * @param year * @param month * (1到12之间整数) * @param day * @return */ public static Date getDate(int year, int month, int day) { GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); return calendar.getTime(); } /** * 得到日期所对应的年. * * @return */ public static int getYear(Date date) { GregorianCalendar ca = new GregorianCalendar(); ca.setTime(date); return ca.get(Calendar.YEAR); } /** * 得到月份. * * @return */ public static int getMonth(Date date) { GregorianCalendar ca = new GregorianCalendar(); ca.setTime(date); return ca.get(Calendar.MONTH); } /** * 得到一年的第几天. * * @return */ public static int getDayOfYear(Date date) { GregorianCalendar ca = new GregorianCalendar(); ca.setTime(date); return ca.get(Calendar.DAY_OF_YEAR); } /** * 得到一月里面的第几天. * * @return */ public static int getDayOfMonth(Date date) { GregorianCalendar ca = new GregorianCalendar(); ca.setTime(date); return ca.get(Calendar.DAY_OF_MONTH); } /** * 得到周几. * * @return */ public static int getDayOfWeek(Date date) { GregorianCalendar ca = new GregorianCalendar(); ca.setTime(date); return ca.get(Calendar.DAY_OF_WEEK); } /** * 得到某年中某星期的指定星期几. * * @param year * @param week * @param day * 为1到7之间整数:1-sun-->7-sta * @return */ public static Date getDayInThisWeek(int year, int week, int day) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.WEEK_OF_YEAR, week); cal.set(Calendar.DAY_OF_WEEK, day); return cal.getTime(); } /** * 得到日期是在一年的第几个星期. * * @param date * @return */ public static int getWeekOfYear(Date date) { GregorianCalendar ca = new GregorianCalendar(); ca.setTime(date); return ca.get(Calendar.WEEK_OF_YEAR); } /** * 得到两个日期的时间间隔 * * @param date1 * @param date2 * @return */ public static long getTimeInterval(Date date1, Date date2) { return date1.getTime() - date2.getTime(); } /** * 得到两个日期的间隔天数. * * @param date1 * @param date2 * @return */ public static int getDayInterval(Date date1, Date date2) { return (int) ((date1.getTime() - date2.getTime()) / ONEDAYMILLISECONDS); } /** * 得到几天以后的某一天. * * @param days * 可以为负数 * @return */ public static Date afterAnyDay(Date date, int days) { if(date==null) return null; Date newDate = new Date(); long tp = date.getTime(); tp = tp + days * ONEDAYMILLISECONDS; newDate.setTime(tp); return newDate; } /** * 得到起始日期之后的某年(某月)(某日)的新日期 * * @param date * 起始日期 * @param years * 年份间隔 * @param months * 月份间隔 * @param days * 天数间隔 * @return */ public static Date afterAnyDay(Date date, int years, int months, int days) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.YEAR, years); cal.add(Calendar.MONTH, months); cal.add(Calendar.DATE, months); return cal.getTime(); } /** * 返回某一年的某月的天数. * * @param year * @param month * @return */ public static int maxDayInMonth(int year, int month) { Calendar time = Calendar.getInstance(); // 必须先clear一下,因为默认会得到当前系统时间 time.clear(); time.set(Calendar.YEAR, year); time.set(Calendar.MONTH, month - 1); return time.getActualMaximum(Calendar.DAY_OF_MONTH); } /** * 返回一年里面某一周的开始日期. * @param year * @param week * @return * @throws ParseException */ public static Date getWeekStart(int year,int week) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy w"); Date start = null; try { start = sdf.parse(year+" "+week); } catch (ParseException e) { e.printStackTrace(); } return start; } /** * 返回一年里面某一周的结束的日期. * @param year * @param week * @return * @throws ParseException */ public static Date getWeekEnd(int year,int week){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy w"); Date end = null; try { end = sdf.parse(year+" "+week); } catch (ParseException e) { e.printStackTrace(); } return afterAnyDay(end,6); } /** * 返回现在. * * @return */ public static Date now() { return new Date(); } /** * 将日期格式转换为日历. * * @param date * @return */ public static Calendar dateToCalendar(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal; } /** * 将日历转换为日期. * * @param cal * @return */ public static Date calendarToDate(Calendar cal) { return cal.getTime(); } public static final long ONEDAYSECONDS = 86400; public static final long ONEDAYMILLISECONDS = 86400000; /** * @param args */ public static void main(String[] args) { Date now = DateTool.now(); System.out.println("今天日期是:" + DateTool.toString(now)); System.out.println("现在是:" + DateTool.toString(now, "yyyy-MM-dd HH:mm:ss")); System.out.println("今天星期是:" + DateTool.toString(now, "E") + ",是本周的第" + DateTool.getDayOfWeek(now) + "天!"); System.out.println("40天之后是:" + DateTool.toString(DateTool.afterAnyDay(now, 40))); Date endDate = DateTool.getDate(2011, 7, 15); System.out.println("距离还有:" + DateTool.getDayInterval(now, endDate) + "天到20100715"); String yearNum = DateTool.toString(now, "yyyy"); String weekNum = DateTool.toString(now, "w"); System.out.println("今天是:一年的第几个星期::" + weekNum); System.out.println("本周的第一天是"+DateTool.toString(getWeekStart(Integer.parseInt(yearNum),Integer.parseInt(weekNum)))); System.out.println("本周的最后一天是"+DateTool.toString(getWeekEnd(Integer.parseInt(yearNum),Integer.parseInt(weekNum)))); } }
3.关于double类型的运算,特别是精度的问题:
import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; public class Tool { private static DecimalFormat df = new DecimalFormat("#######.#####"); /** * 减法 * @param d1 * @param d2 * @return */ public static double subtract(double d1, double d2) { BigDecimal b1 = new BigDecimal(d1); BigDecimal b2 = new BigDecimal(d2); return Double.parseDouble(df.format(b1.subtract(b2).doubleValue())); } /** * 自定义运算法则的除法运算. * @param d1 * @param d2 * @param scale 精度 * @param mode * @return */ public static double divide(double d1, double d2, int scale, RoundingMode mode) { BigDecimal b1 = new BigDecimal(d1); BigDecimal b2 = new BigDecimal(d2); return Double.parseDouble(df.format(b1.divide(b2, scale, mode) .doubleValue())); } /** * 四舍五入的除法运算. * @param d1 * @param d2 * @param scale 精度 * @return */ public static double divide(double d1, double d2, int scale ) { BigDecimal b1 = new BigDecimal(d1); BigDecimal b2 = new BigDecimal(d2); return Double.parseDouble(df.format(b1.divide(b2, scale, RoundingMode.HALF_UP) .doubleValue())); } public static double multiply(double d1, double d2) { BigDecimal b1 = new BigDecimal(d1); BigDecimal b2 = new BigDecimal(d2); return Double.parseDouble(df.format(b1.multiply(b2).doubleValue())); } public static double add(double d1, double d2) { BigDecimal b1 = new BigDecimal(d1); BigDecimal b2 = new BigDecimal(d2); return Double.parseDouble(df.format(b1.add(b2).doubleValue())); } }
相关推荐
Java面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdf...
sql server日期相关函数集合,对sql server开发中所涉及到的相关日期计算很有帮助
sql函数集锦sql函数集锦sql函数集锦sql函数集锦sql函数集锦sql函数集锦sql函数集锦sql函数集锦sql函数集锦sql函数集锦
Java常见问题集锦 Java常见问题集锦Java常见问题集锦
Oracle日期函数集锦,常见日期函数的使用,及具体的使用实例
Java笔试题集锦/JAVA 基础/servlet笔试题目
Java 面试 最新 最全 算法 框架 语言;core java career essentials,542页完整版
java中字符串常用函数 看了就知道 很好用 速查
Java编程精选集锦
Java经典项目集锦
JAVA案例开发集锦:分六个压缩卷,请都下载了再解压 第一压缩卷 下完后请把文件名改为:JAVA案例开发集锦[1].part1.rar.rar
java面试问题集锦
如何设置Java 2(JDK1.2)的环境变量? 答: Java 2安装后,需要设置PATH和JAVA_HOME环境变量.与JDK1.1不同的是:设置好JAVA_HOME环境变量后,JVM将自动搜索系统类库以及用户的当前路径. Java 2环境变量的设置如下例所示...
R函数集锦.doc,常见的R语言函数说明
这也是我从网上搜来的,此集锦包含了oracle的几乎所有日期函数,很好的。好东西不能独享。
555应用集锦 555应用集锦 555应用集锦 555应用集锦
JAVA精华集锦.JAVA精华集锦.JAVA精华集锦.JAVA精华集锦.JAVA精华集锦.JAVA精华集锦.
JAVA案例开发集锦pdf JAVA案例开发集锦pdf JAVA案例开发集锦pdf