ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

2022.01.04-JAVASE结束-从Stringbuffer类开始-到Collection结束

2022-01-17 21:01:19  阅读:169  来源: 互联网

标签:--- 04 Stringbuffer add Collection ---- coll ----- value


接上篇
小不忍则乱大谋
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()

这相当于高强度的复习了,真的是温故而知新啊!

标签:---,04,Stringbuffer,add,Collection,----,coll,-----,value
来源: https://blog.csdn.net/Etherstrings/article/details/122401188

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有