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;
	}
}



}

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