接上篇
小不忍则乱大谋
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()
这相当于高强度的复习了,真的是温故而知新啊!



