JAVA集合
文章平均质量分 84
源码实战,进入源码的世界
一直再追梦
我希望我可以把全套的知识体系全部更新完毕,见证着我的成长的同时,为广大的迷茫中的程序员指明一条方向,即时有学习的方向。毕业之后也会更新,关注我,省下培训班的好几万块。之后会不断更新实战项目。只希望有越来越多的优秀的程序员在自己的岗位上去发光发热。技术是需要磨炼的,现在的苦是为了以后的甜。加油,在座的各位,一起努力吧,一起脚踏实地仰望星空吧。
展开
-
集合(十四)LinkedHashMap详解
【代码】集合(十四)LinkedHashMap详解。原创 2023-04-24 04:00:00 · 159 阅读 · 0 评论 -
Java集合(八)Map接口
我们来查看Map接口:里面的k-v和set集合的不同之处在于:key仍然是一个对象,但是对于set来说value是一个常量,set里面的value放的是 静态性质的PRESENT。而map的value是自己传进去的。map接口是一个双列集合,set接口是一个单列集合。原创 2023-02-02 04:00:00 · 1620 阅读 · 3 评论 -
Java集合(七)LinkedHashSet
添加第一次时,直接将数组table扩容到16,存放的结点类型是LinkedHashMap$Entry,table是HashMap$Node内部类数组的这样子一个类型,但是他里面存放的真实的元素是LinkedHashMap$Entry这种类型,他们之间有继承或者实现关系,Entry继承或者实现了Node。(3)在添加一个元素时,先求hash值,在求索引,确定该元素在table的位置,然后将添加的元素加入到双向链表(如果已经存在,不添加【原则和hashset一样】)我们还可以进行查看head和tail。原创 2023-02-01 04:00:00 · 1896 阅读 · 0 评论 -
Java集合(六)Set接口和常用方法
(1)无序(添加和取出的顺序不一致),没有索引(2)不允许重复元素,所以最多包含一个null(3)JDK API中Set接口的实现类有:EnumSetHashSetTreeSetSet接口的常用方法:和List接口一样,Set接口也是Collection的子接口,因此,常用方法和Collection接口一样Set接口的遍历方式:同Collection的遍历方式一样,因为Set接口是Collection接口的子接口1.可以使用迭代器2.增强for3.不能使用索引的方式来获取。原创 2023-01-31 04:00:00 · 1396 阅读 · 0 评论 -
Java集合(五)LinkedList底层扩容源码分析
(1)LinkedList底层实现了双向和双端特点(2)可以添加任意元素(元素可以重复),包括null.(3)线程不安全,没有实现同步。原创 2023-01-30 20:30:00 · 1023 阅读 · 0 评论 -
Java集合(十三)Collections工具类
(1)Collections是一个操作Set、List和Map等集合的工具类(2)Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作。原创 2022-10-12 00:30:00 · 308 阅读 · 0 评论 -
Java集合(十二)TreeMap解读
我们发现TreeMap类里面除了提供无参的类以外,也有TreeMap(Comparator )这样子的构造器。TreeMap可以传入一个实现了 Comparator接口的一个匿名内部类,匿名内部类里面我们仍然可以去指定添加我们的键值对的这种排序规则。1.构造器,把传入的实现了Comparator接口的匿名内部类(对象),传给了TreeMap的comparator属性。我们继续进行添加,查看源码。如果我们使用TreeMap,里面放置的是(e为Key,PRESENT为对应的那一个值)。原创 2022-10-11 00:30:00 · 2742 阅读 · 0 评论 -
Java集合(十一)TreeSet解读
我们查看treeset的构造器的时候,发现TreeSet的构造器除了那种无参构造器之外,还提供了另外四种。就是把value值取出来,然后进行循环比较,如果发现不相等,就返回c1-c2,然后谁的ACCIS码值大,就返回大于0的值,否则返回小于0的值。Comparator是一个接口,他有一个方法叫compare,我们可以在他的compare方法指定他的一个排序规则。我们再次进入了TreeMap里面了,进入了TreeMap里面的put方法。这个构造器接收了一个comparator,这个接口的实现对象。原创 2022-10-10 03:00:00 · 1144 阅读 · 0 评论 -
Java集合(十)HashTable接口和Properties
(2)hashtable的键和值都不能为null,否则会抛出NullPointerException(3)hashTable使用方法基本上和HashMap一样(4)hashtable是线程安全的(synchronized),hashMap是线程不安全的}(5)简单看下底层结构}}我们运行之后如下所示:我们发现当键和值为空的时候,抛出异常:NullPointerExcepion。//OK//异常 NullPointerException//异常//OK//原创 2022-10-09 04:30:00 · 359 阅读 · 0 评论 -
Java集合(九)HashMap接口
HashMap小结:(1)Map接口的常用实现类:HashMap、Hashtable和Properties(2)HashMap是Map接口使用频率最高的实现类(3)HashMap是以key-val对的方式来存储数据(HashMap$Node类型)(4)key不能重复,但是值可以重复,允许使用null键和null值(5)如果添加相同的key,则会覆盖原来的key-val,等同于修改.(key不会替换,val会替换)我们来把断点放在map.put("no1","张三丰“);原创 2022-10-08 10:54:46 · 906 阅读 · 0 评论 -
JAVA集合(一)Collection接口
集合的框架:前面我们保存多个数据使用的是数组。数组有不足的地方数组的特点如下所示:(1)长度开始时必须指定,而且一旦指定,不能更改示例如下:1。数据类型 [ ]数组名=null;2.数据类型[ ]数组名;数组名=new 数据类型[长度 ];(int [] n;:类型 [ ]数组名 =new 类型[ ]{元素,....}类型 [ ]数组名={元素,元素.......}当我们对这个数组进行扩容的时候,我们需要创建一个新的数组,然后再把原数组拷贝过去很麻烦。(2)保存的必须为同一类型的元素。原创 2022-09-29 20:43:02 · 1689 阅读 · 0 评论 -
JAVA集合(二)List接口详解
添加10个以上的元素(比如String "hello"),在2号位插入一个元素”快船总冠军“,获得第五个元素,删除第六个元素,修改第七个元素,在使用迭代器遍历集合,要求:使用List的实现类ArrayList完成。我们先进行new一个类:ArrayList,然后新建一个Book类,然后进行创建它的构造方法,设置它的getter和setter,同时设置它的toString方法。(3)List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。我们看看其他类怎么样。原创 2022-10-01 21:12:25 · 2885 阅读 · 0 评论 -
JAVA集合(三)ArrayList底层扩容机制源码分析
比如我们往里面放东西,刚开始扩容为10,放满之后,我们继续扩容,为10的1.5倍,即15。我们使用构造器ArrayList(int),如果我们刚开始指定为8,初始化传入的int为8,elementDate的大小为8,如果我们填满之后,进行扩容的时候,是在8的1.5倍即为12进行扩容。我们使用构造器ArrayList(int),如果我们刚开始指定为8,初始化传入的int为8,elementDate的大小为8,如果我们填满之后,进行扩容的时候,是在8的1.5倍即为12进行扩容。再执行赋值的操作(先赋值后++)原创 2022-10-02 17:55:44 · 871 阅读 · 0 评论 -
Jaca集合(四)Vector集合底层源码分析
(2)Vector底层也是一个对象数组,protected Object[ ]elementData;数据放在对象数组里面:(3)Vector是线程同步的,即线程安全,Vector类的操作方法带有synchronized(支持线程同步和互斥)我们在源码里面发现它的一个普通的方法也带有synchronized:(4)在开发中,需要线程同步安全时,考虑使用Vector单线程用ArrayList,效率比较高。多线程用Vector,效率比较低。原创 2022-10-03 00:48:27 · 409 阅读 · 0 评论