jdk新日期类
新日期的创建
通过LocalDate,LocalTime,LocalDateTime表示日期时间
LocalDate:表示日期,不包含具体时分秒
LocalTime:表示时间,即时分秒,不包含日期
LocalDateTime:包含日期和时间
LocalDateTime.now();//过得当前系统时间的日期对象
LocalDateTime.of();//获得指定时间的日期对象
LocalDateTime today = LocalDateTime.now();
today.get()//获得具体的日期项
日期格式处理
// LocalDateTime默认的日期格式为 yyyy-MM-ddTHH:mm:ss
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime day = LocalDateTime.parse("2005/01/01 01:01:01",format);//创建该格式的日期对象
System.out.println(day.format(format));//输出
日期的计算
LacalDate day = LocalDate.of(2000,01,01);
//加减具体日期项,例如:
LocalDate r = day.plus(1,ChronoUnit.DAYS);
LocalDate r = day.plusDays(1);
//加减日期
Period p = Period.of(0,1,1);
LocalDate r = day.plus(p);
//日期间隔
LocalDate today = LocalDate.now();
//以年月日为间隔单位
LocalDate day = LocalDate.of(2000,01,01);
Period p = Period.between(day,today);
long days = Chronounit.YEARS.between(birthday, today);//计算年数差
//以时分秒为单位
LocalDateTime day2 = LocalDateTime.of(2000,01,01,1,1,1);
Duration between = Duration.between(day2,today);//Duration 类是用于表示两个时间点(Instant 或 LocalDateTime 与时区信息结合后的 ZonedDateTime)之间的时间量的
新老日期转换
//老 -> 新
Date date = new Date();
Instant istant = data.toInstant();
ZonedDateTime zonedpateTime
instant.atZone(ZoneId.systemDefault());
LocalDateTime day = zonedDateTime.toLocalDateTime;
//新 -> 老
LocalDateTime day = LocalDateTime.of(2000,01,01,1,1,1);
ZonedpateTime zonedDateTime
birthday.atzone(ZoneId.systempefault();
Instant instant = zonedDateTime.toInstant;
Date date = Date.from(instant);
集合的使用
增强for循环
主要用于简化集合和数组的元素遍历
本质使用Iterator迭代器
List<string> list = new ArrayList<>();
for(string s : list){
....
}
//等价于
Iterator<string> it = list.iterator();
for(it.hasNext()){
String s = it.next();
....
}
String[] array = new String[];
For(String s:array){
....
}
List集合的使用
List<string> list = new ArrayList<>();
list.add(E e); //在末尾添加一个元素
list.addA11(Collection es);//在末尾添加另一个集合中的一组元素
list.add(int index,E e);//插入一个元素
list.addA1l(int index ,Collection es);//插入一组元素
list.remove(Object o);//删除指定的元素(底层使用equals判断相等)
list.remove(int index);//删除指定位置的元素
list.removeA1](Co1lection es);//删除一组元素
list.size();//返回集合中元素的个数
list.get(int index);//获取指定位置的元素
Iterator it = list.iterator();//获得迭代器对象;
it.hasNext();//判断是否还有下一个元素
it.next();//获得下一个元素
object[] os = list.toArray();//将容器中的元素装入数组并返回
String[] ss = list.toArray(new String[0]);//根据指定的类型,返回指定类型的数组
list.clear();//清空容器中的元素
list.isEmpty()://判断容器是否为空 (size == 0)
1ist.contains(Object o);//判断容器中是否包含指定的元素(equals)
list.indexof(Object o);//找到容器中指定元素的位置(用来判断元素是否判断存在)
list.sort(Comparator c);//根据指定的比较器,比较元素大小,并完成排序
Set集合的使用
Set<string>set=new Treeset<>;
set.add(E e)://添加一个元素,位置不确定
set.addA11(Collection es);//添加另一个集合中的一组元素
set.remove(Object o);//删除指定的元素,通过equals()进行比较
set.removeA11(Co1lectiones);//删除一组元素
set.size();
set.clear()
set.isEmpty();
set.contains(Object o);
Iterator it = set.iterator();//获得迭代器对象
it.hasNext();
it.next();
Map集合的使用
Map的特点是基于存储的key找到与之对应value,不擅长遍历
Map<Integer,string> map = new HashMap<>();
map.put(key,value);//添加一个元素
//添加相同元素时,key去重,value覆盖
map.putA11(Map otherMap);//将另一个map中的元素都添加到当前map集合中
String value = map.get(key);//根据key取出对应的value
map.remove(key);//删除key对应的数据,同时返回删除的value
map.size();//获取元素(键值对)的个数
map.clear();//清空集合
map.isEmpty();//判断集合是否为空
map.containsKey(key);//判断集合是否包含指定的key
map.containsValue(value)://判断集合是否包含指定的value
//map集合的遍历
// map集合不支持直接遍历,但是可以间接遍历
Set<Integer> keys = map.keyset();//返回装有所有key的set集合
Collection<String> values = map.values();//返回装有所有value的co]lection集合,支持迭代器遍历
//entryset获得一个装有所有键值对数据的set集合,Entry是Map中定义的一个内部类
Set<Map.Entry<Integer, string>> entries = map.entryset();