0
点赞
收藏
分享

微信扫一扫

Java学习_Day016

南柯Taylor 2022-01-08 阅读 39

Timer定时器 and 数据结构(基于数组,基于链表)

1. 定时器

2. 数据结构



1. 定时器

1.1 定时器执行任务的认识
        (1) 定时炸弹: 一个炸弹 + 一个定时器组成的
        (2) 原理: 当定时器到指定时间了就引爆炸弹(到了指定时间执行指定的任务)
        
1.2 什么是定时器
        定时任务 java.util.TimerTask 由定时器 java.util.Timer 安排为一次执行或重复执行的任务
        
Timer  :
        可以遇到的场景: 炸弹, 闹钟, 电器, OA(办公自动化)
        
        构造方法: Timer() 创建一个新的定时器
        方法: void schedule(TimerTask task , long delay)  在指定延迟时间之后执行
                    void schedule(TimerTask task , Date time)   在指定的时间执行
                    void schedule(TimerTask task , Date firstTime , long period)  在指定的时间每隔多时间重复执行
                    void scheduleAtFixedRate(TimerTask task , Date firstTime , long period)  在指定的时间每隔多少时间重复执行,并且将没有执行的补充执行

2. 数据结构

数据结构: 对数组存储的一种方式(结构)
        1. 基于数组的结构
                基本数据类型
                数组
                字符串
                
     String     StringBuilder
     底层   数组   char
     默认大小16   超过了16 大小,创建一个新的数组,新的数组是原始数组的2倍
     创建指定大小的字符串   int[ ]
     通过方法来添加数组
     
 基于数组的数据结构:
        容器1.0 :
                    1. 只能存储 int 整数
                    2. 实现半自动扩容
                    3. 全自动扩容
                    4. 重写 toString
                    5. 通过索引查找元素
                    6. 通过索引删除元素
                    7. 获取容器元素长度(存储的个数)
     特点:
                1. 新增  (性能低)
                2. 修改  (性能高)
                3. 查询  (性能高)
                4. 删除  (性能低)
                
                
 2. 基于链表的结构 LinkedList
        
自定义一个新的类型Node,类里面定义两个字段,
 一个Object类型字段存放值
一个Node类型字段,存放下一个Node对象地址

新认识: LinkedList     Node
链表新增方法: void add (Object  value)
创建盒子:  Node  n =  new  Node(value);
首部节点: firstNode
尾部节点: endNode

        容器1.0: 
                    1. 存储任意的类型
                    2. 新增数据
                    3. 重写 toString
         总结:
                链表特点:
                  新增: 性能高
                  删除: 性能高
                  修改: 性能低
                  查询: 性能低

重写 toString 方法:
    @Override    
    
    public String toString( ) {    
    StringBuilder sb = new StringBuilder( "[" ) ;     
    // 循环遍历链表;        
    Node n = firstNode;
    while( n != null ) {      
    // 取出数据拼接到字符串中;                          
    sb.append(n.getValue( ) ) ;   
    // 判断是否存在下一个节点;           
    if (n.nextNode != null) {    
    sb.append(",");            }
    //  获取下一个节点;           
    n = n.nextNode;        }        
    sb.append("]");  
   return sb.toString();   }    
举报

相关推荐

java016学习记录

Java学习(Day 37)

Java学习 day 1

Java学习(Day 2)

Java学习(Day 27)

Java学习(Day 24)

Java学习(Day 26)

016 AGPBI: {

0 条评论