過個(gè)年街图,一個(gè)月沒有學(xué)習(xí)Java浇衬,這星期補(bǔ)上。
作業(yè):
1) 要求使用List
2) 要求使用Set
3) 要求了解Date餐济、Calendar耘擂、SimpleDateFormat
輸出當(dāng)前時(shí)間,格式y(tǒng)yyyMMdd HHmmss
當(dāng)前時(shí)間加N天
輸出當(dāng)前日期是年份絮姆、月份醉冤、周幾,一年中第幾天
日期比較
使用List 和 Set
Set是最簡(jiǎn)單的一種集合篙悯。集合中的對(duì)象不按特定的方式排序蚁阳,并且沒有重復(fù)對(duì)象。
Set接口主要實(shí)現(xiàn)了兩個(gè)實(shí)現(xiàn)類:
?HashSet: HashSet類按照哈希算法來存取集合中的對(duì)象鸽照,存取速度比較快
?TreeSet :TreeSet類實(shí)現(xiàn)了SortedSet接口螺捐,能夠?qū)现械膶?duì)象進(jìn)行排序。
LinkedHashSet:具有HashSet的查詢速度矮燎,且內(nèi)部使用鏈表維護(hù)元素的順序(插入的次序)定血。于是在使用迭代器遍歷Set時(shí),結(jié)果會(huì)按元素插入的次序顯示诞外。
List的特征是其元素以線性方式存儲(chǔ)澜沟,集合中可以存放重復(fù)對(duì)象。
List接口主要實(shí)現(xiàn)類包括:
ArrayList() : 代表長(zhǎng)度可以改變得數(shù)組浅乔【笪梗可以對(duì)元素進(jìn)行隨機(jī)的訪問铝条,向ArrayList()中插入與刪除元素的速度慢靖苇。
LinkedList(): 在實(shí)現(xiàn)中采用鏈表數(shù)據(jù)結(jié)構(gòu)。插入和刪除速度快班缰,訪問速度慢贤壁。
public void studyList() {
System.out.println("------------List 開始-----------");
List list = new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
list.add("lisi");
Iterator it = list.iterator();
while ( it.hasNext()) {
System.out.println(it.next());
}
System.out.println("------------List 結(jié)束------------");
}
public void studySet() {
System.out.println("------------set 開始------------");
Set set = new HashSet();
set.add("zhangsan");
set.add("lisi");
set.add("wangwu");
set.add("lisi");
Iterator it = set.iterator();
while ( it.hasNext()) {
System.out.println(it.next());
}
System.out.println("------------set 結(jié)束------------");
}
結(jié)果:
------------List 開始-----------
zhangsan
lisi
wangwu
lisi
------------List 結(jié)束------------
------------set 開始------------
wangwu
lisi
zhangsan
------------set 結(jié)束------------
字符串和日期 格式轉(zhuǎn)換
public class HelloWorldFour {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HHmmss");
/**
*
* printDate:將字符串-換成日期. <br/>
*
* @author qingqian
* @param today
* @return
* @throws ParseException
*/
public Date printDate(String today) throws ParseException {
return sdf.parse(today);
}
/**
*
* printDate:將日期格式-換成字符串. <br/>
*
* @author qingqian
* @param today
* @return
* @throws ParseException
*/
public String printDate(Date today) throws ParseException {
return sdf.format(today);
}
public static void main(String[] args) throws ParseException {
HelloWorldFour newWorld = new HelloWorldFour();
Date today = newWorld.printDate("20160304 115555");
System.out.println("字符串轉(zhuǎn)換成日期:"+ today);
String todayStr = newWorld.printDate(new Date());
System.out.println("日期轉(zhuǎn)換成字符串:" + todayStr);
}
}
結(jié)果:
字符串轉(zhuǎn)換成日期:Fri Mar 04 11:55:55 CST 2016
日期轉(zhuǎn)換成字符串:20160304 123943
日期加減
public void addDate() throws ParseException{
SimpleDateFormat sdft = new SimpleDateFormat("yyyyMMdd");
Calendar c = Calendar.getInstance();
System.out.println("當(dāng)前時(shí)間:"+ sdft.format(c.getTime()));
c.add(Calendar.DATE, 1);//增加一天
c.add(Calendar.MONTH, 1);//增加一月
c.add(Calendar.YEAR, 1);//增加一年
System.out.println("增加1年1月1日:"+ sdft.format(c.getTime()));
c.set(Calendar.DATE, c.get(Calendar.DATE) - 5);
System.out.println("減去5天:"+ sdft.format(c.getTime()));
c.set(Calendar.DATE, c.get(Calendar.DATE) + 23);
System.out.println("再增加23天:"+ sdft.format(c.getTime()));
}
結(jié)果:
當(dāng)前時(shí)間:20160304
增加1年1月1日:20170405
減去5天:20170331
再增加23天:20170423
獲取日期中年、月埠忘、日脾拆,一年中第幾天、一月中第幾天莹妒、星期幾等信息
/**
*
* printYMD:獲取日期中年名船、月、日旨怠,一年中第幾天渠驼、一月中第幾天、星期幾等信息 <br/>
*
* @author qingqian
* @param today
* @throws ParseException
*/
public void printYMD(String today) throws ParseException{
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(today));
System.out.println("當(dāng)前時(shí)間:"+ c.getTime());
System.out.println("當(dāng)前年份:"+ c.get(Calendar.YEAR));
//從0開始鉴腻,所以加1
int month=c.get(Calendar.MONTH)+1;
System.out.println("當(dāng)前月份:"+ month);
System.out.println("當(dāng)前日期:"+ c.get(Calendar.DATE));
System.out.println("當(dāng)前日在月中是第幾天:"+ c.get(Calendar.DAY_OF_MONTH));
System.out.println("當(dāng)前日是星期幾:"+ c.get(Calendar.DAY_OF_WEEK));
System.out.println("當(dāng)前日在年中是第幾天:"+ c.get(Calendar.DAY_OF_YEAR));
}
public static void main(String[] args) throws ParseException {
HelloWorldFour newWorld = new HelloWorldFour();
newWorld.printYMD("20160204 115555");
newWorld.printYMD("20160404 115555");
}
結(jié)果:
當(dāng)前時(shí)間:Thu Feb 04 11:55:55 CST 2016
當(dāng)前年份:2016
當(dāng)前月份:2
當(dāng)前日期:4
當(dāng)前日在月中是第幾天:4
當(dāng)前日是星期幾:5
當(dāng)前日在年中是第幾天:35
當(dāng)前時(shí)間:Mon Apr 04 11:55:55 CST 2016
當(dāng)前年份:2016
當(dāng)前月份:4
當(dāng)前日期:4
當(dāng)前日在月中是第幾天:4
當(dāng)前日是星期幾:2
當(dāng)前日在年中是第幾天:95
日期比較
public void compareDate(String d1, String d2) throws ParseException {
Date date1 = sdf.parse(d1);
Date date2 = sdf.parse(d2);
int num = date1.compareTo(date2);
if (num > 0) {
System.out.println(d1+ "大于"+ d2);
} else {
System.out.println(d1+ "小于"+ d2);
}
boolean flaga = date1.after(date2);
if (flaga == true) {
System.out.println(d1+ "大于"+ d2);
}else {
System.out.println(d1+ "小于"+ d2);
}
boolean flagb = date1.before(date2);
if (flagb == true) {
System.out.println(d1+ "小于"+ d2);
}else {
System.out.println(d1+ "大于"+ d2);
}
}
public static void main(String[] args) throws ParseException {
HelloWorldFour newWorld = new HelloWorldFour();
newWorld.compareDate("20160304 115555", "20160104 115555");
newWorld.compareDate("20160104 115555", "20160204 115555");
}
結(jié)果:
20160304 115555大于20160104 115555
20160304 115555大于20160104 115555
20160304 115555大于20160104 115555
20160104 115555小于20160204 115555
20160104 115555小于20160204 115555
20160104 115555小于20160204 115555