HashSet的底层其实就是HashMap,换句话说HashSet就是简化版的HashMap. 直接上代码: package com.xzlf.collection2; import java.util.HashMap; public class MyHashSet<E> { HashMap<E, Object> map; private static final Object PRESENT = new Object(); public MyHashSet() { map = n…
HashMap结构 HashMap的底层是数组+链表,百度百科找了张图: 先写个链表节点的类 package com.xzlf.collection2; public class Node { int hash; Object key; Object value; Node next; } 自定义一个HashMap,实现了put方法增加键值对,并解决了键重复的时候覆盖相应的节点 package com.xzlf.collection2; /** * 自定义一个hashMap * 实现了put方法…
Node java 中的 LIinkedList 的数据结构是链表,而链表中每一个元素是节点. 我们先定义一下节点: package com.xzlf.collection; public class Node { Node previous; // 上一个节点 Node next; // 下一个节点 Object element; // 元素数据 public Node(Object element) { super(); this.element = element; } public No…
为了照顾初学者,我分几分版本发出来 版本一:基础版本 实现对象创建.元素添加.重新toString() 方法 package com.xzlf.collection; /** * 自定义一个ArrayList,体会底层实现原理 * 初始版本 * @author xzlf * * @param <E> */ public class MyArrayList<E> { private Object[] elementDate; private int size; private sta…
出处: Java NIO 底层原理 目录 1.1. Java IO读写原理 1.1.1. 内核缓冲与进程缓冲区 1.1.2. java IO读写的底层流程 1.2. 四种主要的IO模型 1.3. 同步阻塞IO(Blocking IO) 1.4. 同步非阻塞NIO(None Blocking IO) 1.5. IO多路复用模型(I/O multiplexing) 1.6. 异步IO模型(asynchronous IO) 小结一下 1.1. Java IO读写原理 无论是Socket的读写还是文件的…
面试发现经常有些重复的面试问题,自己也应该学会记录下来,最好自己能做成笔记,在下一次面的时候说得有条不紊,深入具体,面试官想必也很开心.以下是我个人总结,请参考: HashSet底层原理:(问了大几率跟HashMap一起面) HashMap底层原理:(非常大几率问到) Hashtable底层原理:(问的少,问了大几率问你跟HashMap的区别) synchronized底层如何实现?锁优化,怎么优化? ReentrantLock 底层实现: ConcurrentHashMap 的工作原理,底层原…
目录 写在前面 1.1. Java IO读写原理 1.1.1. 内核缓冲与进程缓冲区 1.1.2. java IO读写的底层流程 1.2. 四种主要的IO模型 1.3. 同步阻塞IO(Blocking IO) 1.4. 同步非阻塞NIO(None Blocking IO) 1.5. IO多路复用模型(I/O multiplexing) 1.6. 异步IO模型(asynchronous IO) 小结一下: 写在最后 疯狂创客圈 百万级流量 高并发实战 疯狂创客圈 Java 分布式聊天室[ 亿级流量…
jdk的JUC包(java.util.concurrent)提供大量Java并发工具提供使用,基本由Doug Lea编写,很多地方值得学习和借鉴,是进阶升级必经之路 本文从JUC包中常用的对象锁.并发工具的使用和功能特性入手,带着问题,由浅到深,一步步剖析并发底层AQS抽象类具体实现 名词解释 1 AQS AQS是一个抽象类,类全路径java.util.concurrent.locks.AbstractQueuedSynchronizer,抽象队列同步器,是基于模板模式开发的并发工具抽象类,有如…
1.为什么需要HashMap 前面我们说了ArrayList和LinkedList,它们对容器内的对象都能实现增.删.改.查.遍历等操作, 并且对应不同的情况,我们可以选择不同的List,用以提高效率.从功能上来说,这个容器已经设计得很好了, 为什么我们还要HashMap呢?接下来,让我们细细地分析: 在程序中,我们最常用的动作就是存数据和取数据,存数据就是把数据存起来(包括插入数据和增加数据), 取数据就是找到我们存进去的数据(查找数据),下面从这两个方面来分析一下ArrayList和Link…
关于容器 iterator与collection:容器的起源 iterator的简要介绍 iterable<T> iterator<T> 关于remove方法 Collection的简要介绍 基本特性 方法 关于容器 java中有许多有用的容器,比如说Set,广泛使用的ArrayList,这些容器使用的非常广泛 所有这些容器都是直接或间接源于一个接口:Collection (不是Collections) iterator与collection:容器的起源 容器是java的一个非常重…