JavaSe笔记3.23

  1. Date类

Date(): 创建当前日期

Date(long): 根据指定时间戳创建日期对象 System.currentTimeMillis()

Date(int year,int month,int date): 指定年月日创建日期(year - 1900, month - 1, date)

getYear/Month/Date/Day: 获取年/月/日/星期/...

SimpleDateFormat

SimpleDateFormat(String 日期格式掩码):

y: 年

M: 月

d: 日

H: 时(24小时制)

m: 分

s: 秒

S: 毫秒

E: 星期

format(Date):String 将指定日期格式化为String

parse(String):Date 解析指定字符串为Date

applyPattern(String):void 重新应用样式掩码

  1. JDK8 日期 API

LocalDateTime:

static now():LocalDateTime 创建当前的时间日期

static of(int year,int month,int date,int hour,int min):LocalDateTime 根据指定日期创建

static from(TemporalAccessor):LocalDateTime 将解析后的日期构建为LocalDateTime对象

getYear():int 获取年份

getMonthValue():int 获取月份

getDayOfMonth():int 获取日期

getDayOfWeek(): DayOfWeek 获取星期

toLocalDate():LocalDate 将LocalDateTime转换为LocalDate

withYear(int):LocalDateTime 调整年份,返回新的LocalDateTime对象

plusYear(int):LocalDateTime 加一年,返回新的LocalDateTime对象

minusYear(int):LocalDateTime 减一年,返回新的LocalDateTime对象

isAfter(LocalDateTime):boolean 判断是否在指定日期之后

isBefore(LocalDateTime):boolean 判断是否在指定日期之前

isLeapYear(LocalDateTime):boolean 判断闰年

until(LocalDateTime, ChronoUnit.DAYS):long 计算日期差值

日期格式化器:

DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss E");

format(LocalDateTime):String 格式化日期

parse(String):TemporalAccessor 解析日期返回TemporalAccessor

将TemporalAccessor转换为LocalDate或LocalDateTime需要调用LocalDateTime.from方法

public static TemporalAdjuster next(DayOfWeek dw):下一个周几

public static TemporalAdjuster nextOrSame(DayOfWeek dw):下一个周几(包括当天)

public static TemporalAdjuster previous(DayOfWeek dw):前一个周几

public static TemporalAdjuster previousOrSame(DayOfWeek dw):前一个周几(包括当天)

public static TemporalAdjuster firstDayOfMonth/lastDayOfMonth(): 当月的第一天/最后一天

public static TemporalAdjuster firstDayOfYear/lastDayOfYear(): 今年的第一天/最后一天

public static TemporalAdjuster firstInMonth/lastInMonth(DayOfWeek dw): 当月的第一个/最后一个星期几

public static TemporalAdjuster firstDayOfNextMonth/firstDayOfNextYear(): 下一月/下一年的第一天

  1. 程序 = 数据结构 + 算法

  1. 数组(Array):

优点: 遍历,随机访问

缺点: 插入,删除

  1. 栈(Stack):

先进后出(FILO)

队列(Queue):

先进先出(FIFO)

  1. 链表LinkedList:

优点: 遍历,插入,删除

缺点: 随机访问

  1. 树(tree)

红黑树:

优点:查询

缺点:遍历,添加,删除,随机访问

  1. 图(Map): key-value 键值对

  1. 哈希表(HashMap): 数组+链表

key: 不允许重复(根据hashCode值生成键)

value: 允许重复

  1. 获取长度

数组: .length属性

字符串: .length()方法

集合:.size()方法

  1. Collection

add(Object):void 添加元素

remove(Object):boolean 根据对象删除元素,返回是否成功

clear():void 清空集合

size():int 返回集合长度

  1. List:线性集合,有序(添加顺序)不唯一

get(int):Object 根据下标获取元素

remove(int):Object 根据下标删除并返回该元素

add(int,Object):void 将元素添加到指定下标

  1. ArrayList implements List: 数组

初始容量0,第一次添加元素时(懒加载)创建长度为10的数组

扩容倍率为1.5倍

根据对象删除时底层调用equals比较

LinkedList implements List,Collection

栈:

push(Object):void 压栈

pop():Object 出栈

队列:

offer(Object):void 入队

poll():Object 出队

  1. Set

HashSet:

特点与HashMap的key一致

TreeSet:

特点与TreeMap的key一致

  1. Queue

  1. Map: 键值对集合,键不重复,无序

HashMap

jdk8+: 尾插法

jdk7:头插法

初始长度: 16

扩容倍率: 2倍

加载因子: 0.75

扩容阈值: 长度 * 加载因子

树化条件(链表转为红黑树): 桶的深度 > 8 && 数组长度 >= 64

rehash

TreeMap

key必须实现Comparable接口,底层使用红黑树实现,判断重复key的标准不是equals而是compareTo是否返回0

  1. 迭代器:Iterator

所有的集合都能获取迭代器对象

1.获取迭代器 集合.iterator()

2.使用 while(迭代器.hasNext()) 判断是否有下一个元素

3.使用 迭代器.next() 取出下一个元素

删除遍历中的元素: 迭代器.remove()

  1. 增强for循环(foreach): 底层使用迭代器进行遍历

for(数据类型 变量名:集合|数组){

直接使用当前遍历的变量

}

快速失败(fail-fast): java.util包中的集合都是快速失败的, modCount

安全失败(fail-safe): java.util.concurrent包中的集合是安全失败, 能够在多线程环境下使用

  1. 泛型集合

集合类<包装类|类> 集合名 = new 集合类<>();

集合帮助类:

sort(List):void 排序(List中的元素必须实现Comparable接口)

sort(List, Comparator):void 按照指定排序规则进行排列

shuffle(List):void 乱序

  1. Comparable: 用在实体类上,让该实体类具备比较的能力

int comparaTo(Object o);

  1. Comparator: 用在sort方法中,第三方裁判

int compare(Object o1, Object o2)

int返回值表示:

0: 一样大

正数: 我(o1) > 你(o2)

负数: 我(o1) < 你(o2)

  1. 单例类:

1.私有构造
2.公开静态返回本类实例的方法

public static 当前类 createInstance(){

if(成员变量 == null){

成员变量 = new 当前类();

}

return 成员变量;

}

3.静态本类类型的成员变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值