HashMap的工作原理
面试常从“你用过 HashMap 吗?什么是 HashMap?为什么用它?”问起。多数人会答:是的,然后列出特性——HashMap 可以接受 null 键和值,Hashtable 不行;HashMap 非 synchronized;HashMap 很快;存的是键值对。这只能说明你用过它。接下来面试官…
面试常从“你用过 HashMap 吗?什么是 HashMap?为什么用它?”问起。多数人会答:是的,然后列出特性——HashMap 可以接受 null 键和值,Hashtable 不行;HashMap 非 synchronized;HashMap 很快;存的是键值对。这只能说明你用过它。接下来面试官…
任何容器都必须能把东西放进去、再取出来。对 ArrayList,add() 负责插入,get() 是取出方式之一,还可以按下标随机访问。 若站高一层就会发现缺点:使用容器必须知道元素的确切类型和容器种类。原来是 ArrayList,后来想换成 Set,或要写不关心容器类型的通用代码,难道整段重写?这…
下面汇总 8 种常用排序:插入(直接插入、希尔)、交换(冒泡、快速)、选择(直接选择、堆)、归并、分配(基数)。辅助空间最多的是归并,最少的是堆;平均最快的是快速排序。不稳定的三种:快速、希尔、堆。 资料由网络整理,如有问题欢迎指正。原文:Java常用排序算法/程序员必须掌握的8大排序算法 ;参考 …
容器是 Java 学习里很重的一块。刚开始会觉得难,用熟了就顺。容器类主要由两个接口派生:Collection 和 Map。 先把两个容易混的名字分开:Collection 是容器层次的根接口;Collections 是一个工具类,提供处理容器的静态方法。 一、Collection vs Colle…
学过数据结构的人对双向链表都不陌生。用 Java 怎么实现?链表在内存里并不连续,逻辑顺序靠指针串起来。每个结点有数据域,还有指向其它结点的引用。 单链表只有后继。要对某个结点的前驱动手,只能从头再走一遍,很麻烦。双向链表多一个指向父结点的引用,前后都能走。 一、结点:数据 + 父指针 + 子指针 …
线性表、链表、哈希表是常用数据结构。做 Java 开发时,JDK 已经在 java.util 里准备好了一套类。下面按接口把各自的职责和使用方式理清。 记住两棵树:Collection(单列)和 Map(键值)。SDK 不提供直接实现 Collection 的类,实现都落在 List、Set 这些子…