java自學之路-----Map jdk1.5加的功能 System、Math、Math、Date

Map{

特點: 一次添加一對元素,存儲的是一對鍵值,保證鍵的唯一性


方法:value put(key, value)將鍵值存儲在Map容器中,如果之前容器中已經有了這個key,那麼該方法的value覆蓋原先的value並返回原先的value。如果沒有的話就返回null
    value remove(key)根據指定的key,刪除該鍵值對,並返回這個value

    value get(key)通過key返回對應的value,如果容器中沒有該鍵則返回null(所以可以通過是否返回null,可以確定該容器中有無該鍵)


子類{
HashTable 內部是哈希表結構,jdk1.0就存在的雙列元素,是同步類。
HashMap 內部哈希表結構,不同步,效率高,特點,可以用null作爲鍵和值
TreeMap 內部是二叉樹結構,不同步,效率高,可以對Map集合中的鍵進行排序

}


兩個重要的方法{
keySet() 可以獲取Map容器中所有鍵所在的Set集合,並返回。再通過Set的迭代器獲該Set集合的所有元素(即Map的鍵),再通過該元素運用map.get(key)就可以得到該集合中的元素
entrySet() 將鍵值映射的關係存儲到Set集合並返回,該映射關係式Map.Entry類型(Map類中的靜態內部接口)。該接口將鍵值封裝成一個對象,並對其進行取值獲取Map容器的元素

}


工具類Arrays{
將一個數組轉換爲集合{
方法: List  asList(數組)
好處:可以使用集合的方法操作數組中的元素
缺點:由於數組元素是固定的,所以集合的長度也是固定不變的,因此不可使用修改長度的增刪方法
注意:如果數組中的元素是對象,那麼轉成集合時,每一個元素都作爲容器的一個元素
    如果數組中的元素是基本類型數值,那麼該數組就作爲集合的一個元素進行存儲
}
將集合轉換爲數組{
方法: 接口Collection中的toArray(new String[])
好處:可以對集合中的方法進行限定,不允許對其增刪
特點:如果數組長度小於集合size,那麼該方法就創建一個與數組同類型,並與集合相同size的數組
    如果數組長度大於集合size,那麼就是用數組的長度,多出來的部分用null填充
}

}

}



jdk1.5新特性{

foreach語句{

實現遍歷的效果
格式:for(類型 變量   : Collection集合或數組)
例:
		List<String> list = new ArrayList<String>()
		for(String s :	list)
		System.out.println(s)
特點:傳統的for語句可以定義變量,並控制循環次數和增量
     foreach語句必須有遍歷的目標,該目標是數組或collection單列集合(無法直接遍歷Map)
}

可變參數{
注意:可變參數部分必須定義在參數列表的末尾
例: add(int... arr)類似  add(int[] arr)
該可變參數就相當於一個數組
}

靜態導入{
格式:import static java.util.Collection.sort;
導入的是類中的靜態成員,那麼程序可以直接使用sort()方法,不需要帶類名調用(不建議使用,閱讀性差)
}
}

System、Runtime、Math和Date{

System{
該類的屬性和方法都是靜態
常見方法:long currentTimeMillis()獲取當前時間的毫秒值表示
    Properties pro = System.getProperties() 返回一個系統信息的Map集合,鍵值都是字符串格式,所以不需要使用泛型
    System.getProperty("line.separator") 返回該系統的換行符
}

Runtime{
一個單例設計模式的類,沒有構造方法摘要,說明該類不可創建對象,必須使用靜態方法獲取已經創建的對象
Runtime r = Runtime.getRuntime();獲取該單例對象
r.exec(“notepad.exe”)打開一個記事本文件
r.exec(“notepad.exe” “c:\\RuntimeDemo.java”) 調用前一個.exe程序解析後面的.java文件
}

Math{
用final修飾的類,說明不可被繼承
擁有一系列操作數學運算的方法,都爲靜態,可用類名調用
}

Date{
毫秒轉成日期對象{
是爲通過日期對象對年月日進行操作
1.通過Date的構造方法:new Date(毫秒值)
2.通過setTime(毫秒值)將對象設置成指定的時間
}
日期對象轉成毫秒值:getTime()爲了通過該值進行一些數學運算

計算兩個日期相隔天數的例子:
package lee.test;
import java.util.Date;
import java.text.DateFormat;
import java.text.ParseException;

/**
 * 計算兩個日期相隔的天數! * 
 * @author Administrator *
 */
public class DateUseDemo {
	public static void main(String[] args) throws ParseException {
		// TODO Auto-generated method stub
		String str_1 = "2013-2-3";
		String str_2 = "2014-2-8";
		int days = getBetween(str_1, str_2);
		System.out.println(days);
	}

	private static int getBetween(String str_1, String str_2) throws ParseException {
		// TODO Auto-generated method stub
		/**
		 * 1.先將兩個時間字符串轉成對象
		 * 2.從對象中獲取毫秒值
		 * 3.得出兩者之間相差的毫秒值,絕對值保證正數
		 * 4.將毫秒值轉換爲天數
		 */
		DateFormat df = DateFormat.getDateInstance();
		
		Date date1 = df.parse(str_1);
		Date date2 = df.parse(str_2);
		
		long time1 = date1.getTime();
		long time2 = date2.getTime();
		long time = Math.abs(time1 - time2);
		int day = (int)(getDays(time));
		return day;
	}
	private static long getDays(long time) {
		// TODO Auto-generated method stub
		long day = time/1000/60/60/24;
		return day;
	}
}



}

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章