Map{
特点: 一次添加一对元素,存储的是一对键值,保证键的唯一性
方法:value put(key, value)将键值存储在Map容器中,如果之前容器中已经有了这个key,那么该方法的value覆盖原先的value并返回原先的value。如果没有的话就返回null
value remove(key)根据指定的key,删除该键值对,并返回这个valuevalue 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; } }
}