JavaSE
一碗机智的糖浆
这个作者很懒,什么都没留下…
展开
-
HashMap源码分析
hash表中存放的元素是Node对象,Node对象中有hash,key,value,next节点static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next; Node(int hash, K key, V value, Node<K,V> next) {原创 2021-11-18 19:07:30 · 168 阅读 · 0 评论 -
手动实现循环队列
/** * 思路: * 数组实现循环队列 * 入队: * 队满条件:(head + 1) % arr.length==tail * 没有满的时候入队,并且tail后移:tail=(tail+1)%arr.length * 出队: * 队空条件:head==tail * head出队,后移head:head=(head+1)%arr.length; */ public class CircularQueue { public static void main(String[] ar原创 2020-12-17 00:52:05 · 61 阅读 · 0 评论 -
用数组,链表手动实现队列
数组实现队列(poll一次数据迁移一次)/** * 思路: * 用数组实现队列 * 入队:判断队列是否满了。没满,加入元素,下标后移 * 出队:判断队列是否为null。出队的是下标0的元素。不为null,数组整体前移1。更新tail */public class MoveArr_Poll { public static void main(String[] args) { MoveArr_Poll queue = new MoveArr_Poll(2);原创 2020-12-16 19:14:58 · 68 阅读 · 0 评论 -
HashSet源码分析--如何实现的元素不重复
文章目录核心问题:set如何实现的元素不重复?HashSet源码解析HashMap构造add方法Map源码put方法hash方法putValue方法静态内部类Node核心问题:set如何实现的元素不重复?HashSet源码解析HashMap构造底层就是实现一个HashMappublic HashSet() { map = new HashMap<>();}add方法add操作就是把元素作为key放入map中,每次存放一个present的值,这个值没有任何意义,每次存放会原创 2020-12-12 14:55:23 · 129 阅读 · 2 评论 -
Stack源码分析
目录push放入元素pop取出元素peek查看栈顶元素search返回元素在栈中的下标(下标从1开始,栈顶是1,以此类推)push放入元素class Stack<E> extends Vector<E> { 。。。 public E push(E item) { //调用父类Vector 的 addElement方法 addElement(item); return item; .原创 2020-12-02 16:52:27 · 85 阅读 · 0 评论 -
Prioprity源码分析--priority如何实现优先级排序?
目录本文围绕的核心问题:priority是怎么实现的根据优先级排序?Demo源码分析:offer方法siftUp方法siftUpUsingComparator方法接口Comparator中的compare方法(默认比较器)我自定义的compare方法siftUpComparable方法本文围绕的核心问题:priority是怎么实现的根据优先级排序?Demopublic class Demo { public static void main(St..原创 2020-12-02 12:10:25 · 535 阅读 · 4 评论