今日学习:
集合: 存放引用数据类型的容器。 主要学增删改查
Collection: 集合,是一个接口,继承了Iterable,里面有很多方法
List: 也是一个接口,继承了Collectio.
特点: 有序,可以重复
Set: 也是一个接口,继承了Collectio
特点: 无序,不重复
Map:
泛型: 指的就是容器中元素的数据类型。 <数据类型>
好处: 就是省去了获取元素的时候,类型转换。
List接口: 里面有很多方法(增啥改查)
ArrayList: (add、get、size()、sort()最常用)
特点: 内存空间连续
add()
remove(): 只能删除一个,如果有重复的数据,删除第一个
get() : 通过索引获取
set():
size(): 获取元素个数的
sort()
contains(Object o)
ArrayList: 底层是Object数组。所有的增删改查都是基于数组进行的。
size: ArrayList里面标记元素个数的。
添加的逻辑:
如果底层的数组元素满了,就要扩容,扩容1.5倍。然后将元素添加到容器
LinkedList: 链表
链表实现了 List 和 Deque两个接口
特点:内存空间不连续。
底层是Node, 分为3部分 前一部分 数据 后一部分
Deque: 队列, 先进先出
Stack: 栈: 先进后出
ArrayList和LinkedList区别:
ArrayList: 查询快,增删慢
LinkedList 查询慢,增删快
查看源代码的时候:
c: class 类
m: method 方法
f: field 变量
HashSet: 实现了Set接口。
无序: 没有索引
不重复:
add(): 添加了重复元素,只显示一个
remove()
hashSet和hashtable区别:
hashSet线程不安全 效率高
Hashtable 线程安全,效率低
迭代器:iterator
- hasNext
- next
增强for循环 foreach循环
实现了Iterable接口的都可以用
for(泛型数据类型 变量 : 集合名称){
操作变量
}
优点: 简单明了
缺点: 不能操作索引
HashMap: 双列集合 <K,V>
put 如果键存在就是修改,不存在就是添加。
get
remove
size
keySet
面试题:
jdk8 以后HashMap的数据结构是: 数组+ 链表+ 红黑树
当放入某个元素的时候,hashCode算出来要放入的位置,该位置存在元素,那么就以链表的方法放到下面,
如果元素超过8个,就变成红黑树。
如果红黑树的情况下,map删除元素,当红黑树中的元素少于6个的时候,红黑树变成链表。 泊松分布。
HashMap初始化的时候,数组长度为16.
负载因子 0.75.
扩容2倍。
工具类 Collections
- sort
- reverse
- shuffle
- min
- max
- addAll
8.16
今日学习:
工具类:
Object: 所有类的父类
- hashcode() 获取对象hash值
- equlas() 判断两个内存地址是否一样
- toString() 将对象信息变为字符串返回
- finalize() finalize()方法在Object中进行了定义,用于在对象“消失”时,
由JVM进行调用用于对对象 进行垃圾回收,类似于C++中的析构函数;
用户自定义时,用于释放对象占用的资源(比如进行 I/0操作);
equals和==有什么区别
final、finally、finalize的区别
(1)final为关键字;
(2)finalize()为方法;
(3)finally为为区块标志,用于try语句中;
final: 被final修饰的类不可以被继承
被final修饰的方法不可以被重写
被final修饰的变量不可以被改变
String: final修饰的类
构造方法,参数可以是 字节数组、字符数组、字符串
- split() 切割字符串
- strim() 去掉字母首尾空格
- replace() 替换字符串
- subString() 截取区间字符串从start开始到end结束(包头不包尾)
- length() 取到该String的长度
- isEmpty() 判断是否为空
- getBytes() 转换成bytes型数组
- valueOf() 转换类型
String、StringBuffer、StringBuilder
包装类:
对基本数据类型的加强
Integer 字符创和数字的转换
Character isDigit()
isDigit() :如果字符串中只含有数字则返回True
Character:
Math
ceil 返回最小值
floor 返回最大值
round 四舍五入成整数
Date:
构造方法 无参/毫秒值
getTime()
setTime()
System.currentTimeMillis(); 作用是返回当前的计算机时间
SimpleDateFormat: yyyy MM dd HH mm ss
parse(字符串)
format(日期类型)
Random
nextInt(整数) 0-整数
Calendar 抽象类,不能new 主要对日期进行加减运算
add()
日历和Date的转换