- 博客(6)
- 收藏
- 关注
原创 HashMap源码分析
transient Set<Map.Entry<K,V>> entrySet: 用于存储HashMap中的键值对的一个set集合,其中每个元素都是一个Map.Entry类型的对象,该对象包含了一个键值对。transient Node<K,V>[] table: 用于存储HashMap中的键值对的数组,每个元素是一个链表节点,该节点存储了一个键值对。hash是根据key值计算出来的,但是key值不同计算出来的hash值也可能相同,这叫hash碰撞,但是hash值不同key一定不同。
2024-12-08 14:12:34
276
原创 Comparable和Comparator区别
Comparator被称为外部比较器,是因为如果我们需要对某个类(为了便于理解,我们这里称这个类为类A)进行排序(该类本身不支持排序),我们可以另外定义一个实现了Comparator接口的类(类B),来作为类A的“比较器”。用Comparator 的好处是不需要修改源代码, 而是另外实现一个比较器, 当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了。Comparator: 当你想在运行时改变对象的排序规则,或者当对象的排序属性不是固定的时,可以使用Comparator接口。
2024-12-02 19:14:20
380
原创 ArrayList 扩容机制解析
DEFAULTCAPACITY_EMPTY_ELEMENTDATA是默认为空的一个数组,elementData也是一个数组,此时elementData被一个空的数组赋值,所以elementData.length为0。在这个方法里面我们会做一个判断elementData==DEFAULTCAPACITY_EMPTY_ELEMENTDATA如果他们相等的话在(10和1)之间取一个最大值,为什么是10呢?在使用add方法的时候:比如我们添加一个元素,会调用这个方法,elementData的长度为10。
2024-11-30 05:00:39
912
原创 ArrayList和LinkedList的区别和源码分析
从源码可以看出,ArrayList想要get(int index)元素时,直接返回index位置上的元素,而LinkedList需要通过for循环进行查找,虽然LinkedList已经在查找方法上做了优化,比如index < size / 2,则从左边开始查找,反之从右边开始查找,但是还是比ArrayList要慢。ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用;//向左挪一位,index位置原来的数据已经被覆盖了。
2024-10-16 19:16:40
663
原创 CSS中的三种基础选择器及优先级
1.标签选择器:通过标签名找到对应元素,属性名和属性值是可以重复的,三种基础选择器是:id选择器、类选择器、标签选择器。3.id选择器:通过id名找到对应元素。优先级:id选择器>类选择器>标签选择器。4.将id选择器和类选择器放在一起比较。5.将类选择器和标签选择器放在一起比较。2.类选择器:通过类名找到对应元素。比如:.changered。例如:colorID。
2024-08-30 13:54:19
669
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人