![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java知识点
会跑的茶叶蛋
这个作者很懒,什么都没留下…
展开
-
Set-TreeSet
TreeSet既然叫TreeSet了,再根据LinkedHashMap的实现情况,我猜测,TreeSet应该是封装了TreeMappublic TreeSet() { this(new TreeMap<E,Object>());}TreeSet(NavigableMap<E,Object> m) { this.m = m;}private transient NavigableMap<E,Object> m;果不其然。原创 2021-06-21 10:22:01 · 95 阅读 · 0 评论 -
Set-LinkedHashSet源码笔记
2.LinkedHashSet看完这个结构图,LinkedHashSet就是HashSet加了一层,是HashSet的扩展。LinkedHashSet是有序的,那么它是怎么保证有序的?//LinkedHashSet构造器会调用HashSet的三个参数的构造器public LinkedHashSet() { super(16, .75f, true);}//HashSet三个参数的构造器会调用LinkedHashMap,此时,HashSet里面的map存储的是LinkedHash原创 2021-06-21 10:11:56 · 99 阅读 · 0 评论 -
Map-WeakHashMap源码笔记
5.WeakHashMapWeakHashMap是一种弱引用的HashMap,指的是key值如果没有外部强引用后,在垃圾回收的时候会被收掉。引用类型官方文档对引用类型类的描述Provides reference-object classes, which support a limited degree of interaction with the garbage collector. A program may use a reference object to maintain a refe原创 2021-06-21 09:54:51 · 75 阅读 · 0 评论 -
Set-HashSet源码笔记
1.HashSet一个不允许有重复元素的无序队列,只可以有一个null值老规矩,查看重要方法的实现add()public boolean add(E e) { return map.put(e, PRESENT)==null;}private transient HashMap<E,Object> map;// Dummy value to associate with an Object in the backing Mapprivate static final原创 2021-06-20 23:25:46 · 73 阅读 · 0 评论 -
Map-HashTable源码笔记
4.HashTable线程安全的根据put方法,追踪代码,发现hashtable维护的是一个链表数组,没有树结构。再看看方法的前面,有synchronized关键字。所以这是一个线程安全的方法。public synchronized V put(K key, V value) { // Make sure the value is not null if (value == null) { throw new NullPointerExcep原创 2021-06-20 18:15:30 · 85 阅读 · 0 评论 -
Map-LinkedHashMap源码笔记
3.LinkedHashMapLinkedHashMap是继承了HashMap,在维护HashMap的数组,链表,红黑树的基础上,加入了一个双向链表,让插入的数据,根据时间的先后,有了顺序。transient LinkedHashMap.Entry<K,V> head;transient LinkedHashMap.Entry<K,V> tail;static class Entry<K,V> extends HashMap.Node<K,V> {原创 2021-06-20 17:53:01 · 115 阅读 · 0 评论 -
Map-TreeMap源码笔记
2.TreeMapHashMap组合了数组、链表、红黑树,而TreeMap直接就用了红黑树实现。这颗红黑树的根节点private transient Entry<K,V> root;static final class Entry<K,V> implements Map.Entry<K,V> { K key; V value; Entry<K,V> left; Entry<K,V原创 2021-06-20 13:07:21 · 86 阅读 · 0 评论 -
Map-HashMap
1.HashMap[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FFqZE7WH-1624158547789)(java知识点/image-20210618131051961.png)]点开源码,瞧,发现了啥?维护的是一个链表数组,同样的hash值在一个table[i]中。当链表的长度大于最小”建树阈值的时候“,就会变成维护一个树。transient Node<K,V>[] table;static final int TREEIFY_THRESHOLD原创 2021-06-20 11:10:59 · 73 阅读 · 0 评论 -
有序队列PriorityQueue源码分析笔记
PriorityQueue优先队列是一种容器,它可以使得其第一个元素始终是它包含的最大元素,通过堆排序进行实现的。先看看用的什么数据结构存储的信息transient Object[] queue;嗯?又是数组。PriorityQueue来我们看一个添加元素的方法,add–>offer–>siftUp–>siftUpUsingComparator或siftUpComparable所以它实现优先队列的方法是在添加元素后,对维护的数组进行一次最小堆排序。public boole原创 2021-06-20 09:29:35 · 114 阅读 · 0 评论 -
Vector与Stack源码分析笔记
Vector与StackStack是栈,Vector是矢量VectorVector维护的是一个数组protected Object[] elementData;方法实现的内容与ArrayList基本一致。但是Vector是线程安全的,所以的方法几乎都有synchronized修饰如果不定义Vector的数组的每次的增长长度,那么默认是两倍增长Stackpublic class Stack<E> extends Vector<E>Stack继承了Vector,原创 2021-06-18 10:42:39 · 116 阅读 · 0 评论 -
LinkedList源码解析笔记
LinkedList经过了上次看ArrayList源码走的弯路的经验,我这次决定直接查看功能代码。用什么数据结构存储的数据?源码啊中的Node就是存储所用的数据结构,通过查看add方法的实现,验证的。private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E elemen原创 2021-06-18 10:03:13 · 60 阅读 · 0 评论 -
查看ArrayList源码做的笔记
1.ArrayList先了解两种访问方式,随机访问与顺序访问顺序访问:在一组长度为n的数据中,要找到其中的第i个元素,只能从头到尾的遍历,直到找到第i个元素。就是遍历地查询我想要的元素呗。随机访问(直接访问):在一组长度为n的数据中,要找到其中的第i个元素,只需要通过下标就能访问到。就是根据索引就能直接访问到我想访问的元素其中数组就可以进行随机访问不是嘛?比如,array[i]。数组在内存中的存储结构是像一个火车一样,一节一节的。例如java中int的长度是4字节(32位),起始地址0x0原创 2021-06-17 17:18:22 · 85 阅读 · 0 评论 -
java反射
2.3反射反射是一种在程序运行时,动态的获取一个类的所有属性和方法(也能获取到private权限的属性及方法),并能利用得到的类构建对象。Class对象是存储获得类信息的载体如何获得Class对象?三种方法public class Demo2 { int i; public static void main(String[] args) throws ClassNotFoundException { Class c1 = Demo2.class;原创 2021-06-15 09:21:23 · 113 阅读 · 0 评论 -
override 与 overload
2.2 override 与 overload重写是对父类的方法进行重写,重载是对同一个类中已存在的方法进行的重载。这是重写abstract class Demo1 { public abstract void method1(); public void method2(){ }}public class Demo2 extends Demo1 { @Override public void method1() {原创 2021-06-15 08:55:01 · 88 阅读 · 1 评论 -
java的四个关键子final,static,volatile,transient
1.4 java关键字1.finalfinal: 变量,对象引用不可变,方法不可覆盖,类不可以被继承。对象引用不可变@Test public void method1(){ final StringBuilder s = new StringBuilder("a"); s.append('b'); System.out.println(s.toString()); }输出ab@Test public void me原创 2021-06-14 23:24:10 · 217 阅读 · 0 评论