Java SE 进阶 day06

08.JDK8版本之后的时间API

1.日历类(国内时间)

  1. LocalDate、LocalTime、LocalDateTime

    LocalDateTime : 年月日时分秒

    LocalDate : 年月日

    LocalTime : 时分秒

    1.now() : 当前时间
    
    2.of(...) : 设置时间
    
  2. LocalDateTime 转换LocalDate, LocalTime

    1. toLocalDate()
    2. toLocalTime()
    

2.格式化日期类

  1. DateTimeFormatter

    public static void main(String[] args) {
            //获取当前时间
            LocalDateTime now = LocalDateTime.now();
            //获取格式化对象
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年M月d日");
    
            //格式化当前时间
            String date = formatter.format(now);
            System.out.println(date);
    
            //解析输入的日期字符串
            String birthday = "2001年5月14日";
            LocalDate localDate = LocalDate.parse(birthday, formatter);
            System.out.println(localDate);
        }
    

3.时间戳类(国外时间)

  1. Instant : 时间戳

    Instant instant = Instant.now();
    System.out.println("当前时间戳是:" + instant);
    
  2. ZonedDateTime atZone(ZoneId zone) : 获取指定的时区

  3. public static void main(String[] args) {
            Instant now = Instant.now();
            System.out.println(now);
            ZonedDateTime zonedDateTime = now.atZone(ZoneId.systemDefault());
            System.out.println(zonedDateTime);
            ZonedDateTime zonedDateTime1 = now.atZone(ZoneId.of("Europe/Paris"));
            System.out.println(zonedDateTime1);
        }
    

4.和时间有关的计算(具体代码实现可以面向API)

  1. Period ( 计算日期间隔,用于 LocalDate 之间的比较 )
  2. Duration (计算日期间隔,用于 LocalDateTime,Instant 之间的比较 )
  3. ChronoUnit(计算日期间隔 , 可以比较所有的时间单位 )

09.集合

1.集合体系结构

  1. 集合有两大子类 : Collection(单列) , Map(双列)
    • Collection接口存储一组不唯一(允许重复),无序的对象 , 其子类是Set和List
      • Set接口继承Collection接口,存储一组唯一(不允许重复),无序的对象
      • List接口继承Collection接口,存储一组不唯一(允许重复),有序(以元素插入次序来放置元素,不会重新排列)的对象
  2. Map接口存储一组成对的键-值对象,提供key(键)到values(值)的映射,Map中的Key不要求有序,不允许重复。values同样不要求有序,但是允许重复

2.集合和数组的区别

集合数组
长度长度可变长度固定
储存只能储存引用数据类型可以储存基本数据类型和引用数据类型
使用场景长度经常发生改变的数据长度固定不变的数据

3.Conllection集合

  1. 对象创建方式

    Collection 是接口
    不能创建对象,  所以选择多态, 父类引用指向子类对象
    
    目前这样创建,  是为了, 了解 Collection 中共有的方法.
    */
    
    

    2.常用方法

    方法名说明
    public boolean add(E e)把指定对象添加到集合中
    public void clear()清除集合中的对象
    public boolean remove(E e)把指定的对象删除
    public boolean contains(Object obj判断集合中是否有相同的元素
    public boolean isEmpty()判断集合里是否存在元素
    public int size()获取集合长度

4.集合的遍历方式

  1. System.out.println("迭代器遍历");
            Iterator<Student> it = list.iterator();
            while (it.hasNext()){
                Student s = it.next();
                System.out.println(s);
            }
    
            System.out.println("-----增强for循环遍历-----");
            for (Student stu : list) {
                System.out.println(stu);
            }
    
            System.out.println("-----for each遍历(匿名内部类)-----");
            list.forEach(new Consumer<Student>() {
                @Override
                public void accept(Student stu) {
                    System.out.println(stu);
                }
            });
    
            System.out.println("-----for each遍历(lambda表达式)-----");
            list.forEach(stu -> System.out.println(stu));
    

    2.增强for循环是迭代器遍历的语法糖 , 增强for循环和for each遍历的原理都是迭代器遍历

5.迭代器遍历的流程

请添加图片描述

6.内存图

请添加图片描述

7.ArrayList

  1. 底层数组实现, 增删慢, 查询修改比较快

    场景 : 适用于查询和修改比较多的场景

  2. 并发修改异常 : 当迭代器在遍历的过程中 , 使用集合的添加或删除方法, 则出现并发修改异常

    (迭代器对象, 集合对象) 同时操作, 就是并发修改

    结论 : 迭代器遍历的过程中, 如果涉及到赠删, 请使用迭代器自身的赠删方法

  3. 遍历方式 : 增强for循环,for each遍历,迭代器遍历,普通for循环(因为list集合有索引)

  4. ArrayList扩容原理图:
    在这里插入图片描述

8.LinkList

  1. 底层链表实现, 查询修改比较慢, 增 删相对快一点

    首尾操作极快 !

  2. 遍历方法 : 增强for循环,for each遍历,迭代器遍历,普通for循环

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值