接上篇
小不忍则乱大谋
68.StringBuffer类–提升版String-----自动扩容
底层为new char[16]
如果直接new Stringbuffer
69.StringBuffer类方法
增删改查
增:append();
删: delete(2,5)
[ )
改:setcharAt()
replace(0,5,str)
[ )
查:charat()
插:insert(5,str)
长:length
遍历:toString
反转:reverse
70.时期日期的API
CurrentTimes
SimpleDateForamt
71.比较器(重要)
1.Comparable 接口
继承
重写
2.Comparator
Comparator com=new Comparator(){
@overwrite
重写比较方法
}
72.穷举类ーーenmu
enmu Season{
Sping,vacation,FREE
重写
toString(){
}
}
73.enmu的常用方法
values()
value of()
74.枚举类分别可以进行不同方法设置
Winter{
}
使用时:
Switch(Season){
case Winter:
}
75.注解类
1.Retention
表示线程的生命周期
2.Target
表示可以修饰的范围
76.Collecetion 和 Map 两种体系
集合—Collecetion
和
图—Map
77.集合Collcetion------------非常重点
一种包含数据的方式
分为两种大分类:
Collcetion:
List----------------有序 可重复-----动态数组
Set----------------无序 不重复-----集合
-------------Arrarylist(线性表)
List-----------------LinkedList(链表)
------------Vector(向量)
-------------HashSet
Set-----------------LinkdeSet
------------TreeSet
78.Map的分类
Map为函数对应
Key不可重
Valu可重
Key----Value
键-----值
成组添加
HashMap
Linked HashMap
TreeMap
Hashtable
Properties
79.Collection接口中的方法
add(obj e)
size()
addall(int index, )
costains()
实际上采用的是“equals方法”并不是“==”
实际上重写了“equals”
costainsAll( collection col);
------判断是不是集合col全部都存在
remove(Obj obj) ------删除内容更一样的
-------删掉了 true
-------未删除 false
removeAll(Col col1)------------重要!
---------删除col1的所有元素
----------------------------只删交集!!!!
retainAll()-------求交集
-----对coll进行了修改
equals()
hashcode()------返回当前对象哈希值
toArray()-------返回一个数组
-------添加是什么 返回什么数组
集合----》数组
{//底层实现
List list=Arrays.aslist(new String[]{“aa”,“bb”})
}
80.集合如何进行遍历?
1.迭代器模式-----------重要
代码举例:
遍历
首先Arraylist数组 coll
coll添加数据
再然后使用coll调用迭代器
a为coll.iterator
判断a.hasNext()
输出a.Next()
Collection coll=new ArrayList();
coll.add(123);
coll.add(456);
coll.add("王娇璇");
coll.add("付梦雪");
coll.add("Ether");
java.util.Iterator a=coll.iterator();
while(a.hasNext()){
System.out.println(a.next());
}
用于遍历,调用迭代器时候,返回-----一个迭代器的实例
重要——————————
在调用.Next()时,指针才下移
调用hasNext(),指针不动,判断是否存在Next
删除 remove()
如果里面有“Tom”
删除“Tom”
这里作为,迭代到哪一个时候和哪一个进行比较
Collection coll=new ArrayList();
coll.add(123);
coll.add(456);
coll.add("王娇璇");
coll.add("付梦雪");
coll.add("Ether");
coll.add("Tom");
java.util.Iterator a=coll.iterator();
while(a.hasNext()){
Object obj=a.next();
if("Tom".equals(obj)){
a.remove();
}
}
java.util.Iterator b=coll.iterator();
while(b.hasNext()){
System.out.println(b.next());
}
2.增强For-each循环------------不改变coll,只是取出赋值
for(obj : coll)
{
sout(obj)
}
--------------
从coll中
挨个 取出obj对象
输出 挨个取出的obj对象
81.List---------动态数组
1.ArrayList线性表
自动扩容-------默认1.5倍
首次加长------加10长度
JDK7--------底层为饿汉式
JDK8-------底层为懒汉式
2.LinkedList
Node为基本元素------Value和指针(指向后继Value的数值)
也存在双向列表
82.List接口的常见方法
add()
add(index,obj)------从索引处插入obj
indexof()-------首次出现位置
lastindexof()
remove(index)------删除索引对应的值
remove(value)-----删除与value相同的值
set(int index,obj)------索引改为obj
sublist(int start,int end)-------取出---不改变原数组
增:add
删: remove
改 set
查 get
插 add
长 size
遍历 iterator迭代
for each 加强For循环
普通 for循环
83.Set接口
Hashset------------可以存null,线程不安全
每个格子下以Linkedlist形式添加
底层-----
初始化为16长度
无序性----哈希值排序---所以无序
不可重复性----每次添加时,equals判断,不返回true
add方法的底层逻辑:
哈希值定区域
无元素---添加成功
有元素---
原本有n个链表形成的b
a和b哈希值不相同----添加成功
a与当前位置所有进行equals----相同--失败
不相同---成功
84.hashset 调用 add方法时候
重要----------------重写 Hashcode()和 equals() 方法
用一套规则
这样才能有效的添加判断!
85.Hashset子类-----LinkedHashset
额外加了双向链表—记录前一个和后一个的值
优点:频繁的遍历–更好用
86.Treeset----自带排序 加进去就排好序
因此:
必须同一类
必须可比较
可以按照“自然”和“定制”排序
87.Map接口----重头戏来了
怎么理解Map?
Key---value
键---值
x=f(x)==y
HashMap-----LinkedHashMap
HashMap----properties
Sorted----TreeMap
HashMap--------线程不安全 效率高 可存null的key或者value
-----LinkedHashMap ------遍历时,可以有添加的顺序
-------高频率遍历用
TreeMap------添加就已经排序了,红黑树
88.Map接口的结构的理解
单个为Enty(key,value)----一一对应
key-----set存----不重复
value随便
特点-----不重复 无序
重要------key所在的类---重写equal()和hashcode()---毕竟实现了set嘛
89.HashMap的底层实现原理
1.实例化----默认16长度的Enty[]
2.以map.put(key1,value1)---为例
首先 key1.hashcode()---判断往哪里塞--Key定位置
判断位置为空---添加成功
不空----假如存在key2
key1.equals(key2)?
相同-------Key1替换key2----Value1替换value2
不同---加
3.JDK7---------Enty[]--set存---最后也是Arraylist
JDK8——-------Node----set存--链表+红黑树
何时?----List>14&&表>8
90.HashMap源码--------重要!!!!
JDK7-----
加载因子
临界值
Put方法
JDK8-----
加载因子
被树化表最小容量
…
91.LinkedHashMap的底层源码
按照添加顺序进行排序
92.Map接口的方法
以HashMap为例
Map map=new HashMap<>();
//add
map.put("A",87);
map.put("B",87);
map.put("C",87);
map.put("D",87);
//修改
map.put("A",120);
//remove
Object value=map.remove("D");
//clear
map.clear();
//
map.put("A",87);
map.put("B",87);
map.put("C",87);
map.put("D",87);
//get()
//sonstainskey
//constainsvalue
put ----加入或者修改
remove------形参key---返值value
clear----输出空{}
查询
get------key-value
containskey
containsvalue
size
isEmpty
equals
遍历
key value key-value
set keyset()-----key用set存的
--变为对set的遍历
value-----Collection存的
--一般遍历
key-value 怎么遍历?
Entry---用set存的
--set遍历
或者
先调key---key一一对应value
93.TreeMap-
1.也是key-value
2.key必须为同一类
3.key必须可比较----继承or重写com
怎么遍历?
map.entryset()---entry用set存的
While(hasNext();){
}
94.Collections大类(工具类)
同ArrayLists
reverse()----反转
shaffle---随机
sort----排序咯
swap(list,i,j)----交换
max()
min()
frequencey()----出现次数
copy()
----List dest=Array.alist(new object[List.size()])
replaceAll()
这相当于高强度的复习了,真的是温故而知新啊!