2013-07-28 码农明明桑
面试中遇到,但是不会,回来google到,分享下吧,据说是老掉牙的问题 HashMap 是Hashtable 的轻量级实现(非线程安全的实现),他们都完成了Map 接口,主要区别在于HashMap 允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap 允许将null 作为一个entry 的key 或者value,而Hashtable 不允许。 HashMap 把Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey。因为contains方法容易让人引起误解。 Hashtable 继承自Dictionary 类,而HashMap 继续阅读 »
2014-08-23 veryyoung
以下内容是基于HashMap源码注视的翻译 Hash表是基于Map接口的实现,这种实现提供了所有原始map的操作,允许null value和null key。 HashMap类大致相当于HashTable,只是它是不同步,并允许使用空值。 此类对map秩序的维护不做任何保证;尤其是,它并不保证顺序随着时间的推移,将保持恒定。 此实现提供常数时间复杂度的get和put操作,假设散列函数妥善分散桶与桶之间的元素。 迭代集合视图需要的时间复杂度与HashMap实例 的 "capacity"(存储桶的数目)再加上它的key-value 映射的数量 成正比, 因此如果迭代性能重要的话,非常重要的事情是一定不要把Map的初始容量设置得太高或 继续阅读 »
2017-01-13 Piasy
这一篇可以看做是 Handler 的番外篇。 ThreadLocal 看 Looper 源码的过程中,我们肯定看到过 Looper.myLooper() 的使用,它可以获取与当前线程关联的 Looper 对象,那这个关联是怎么建立起来的?就是通过 ThreadLocal。 继续阅读 »
2016-08-15 craneyuan
前言 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。 TreeMap 基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。 HashMap HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序。 Map.Entry返回Collections视图。 按key排序 TreeMap默认是升序的 继续阅读 »
2016-07-11 JustWe
之前看龙书的时候,龙书提到可以在编译器里用动态的生成的NFA自动机来动态匹配自己的输入串,NFA的简单实现其实写起来非常简单,但是我是实际凭感觉写完之后,却觉得并不是非常的好用,在处理自己已经输入过的串,如果还要处理空串和一个符号对应多种路径就势必涉及回溯,所以我就动态生成了一个DFA,应该不是最简的,但是也能满足需求。 DFA状态 ``` java package sample; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; /** * Dfa 状态 * * @author 继续阅读 »
2015-01-22 KasperDeng
|Map | Java | Python | Go | |:--------|:-----------------------|:----------|:----------| |type | Map, HashMap, etc | dict | Map | |package | import Map | primitive | primitive | |mutable | Y | Y | Y | 继续阅读 »
2015-07-17 Alex Sun
AngularJS的一个强大之处就在于依赖注入。在调用bootstrap的时候,会调用createInjector来创建一个注射器进行注入。该方法的代码简化如下: ```javascript function createInjector(modulesToLoad, strictDi) { strictDi = (strictDi === true); var INSTANTIATING = {}, providerSuffix = 'Provider', path = [], loadedModules = new HashMap([], true), 继续阅读 »
2015-09-15 biezhi
在这篇文章中我将向你演示如何使用Java8中的foreach操作List和Map 1. Foreach操作Map 1.1 正常方式遍历Map ```java Map items = new HashMap<>(); items.put("A", 10); items.put("B", 20); items.put("C", 30); items.put("D", 40); items.put("E", 50); items.put("F", 60); for (Map.Entry entry : items.entrySet()) { System.out.println("Item : " + entry.getK 继续阅读 »