共计 41 篇文章

HashMap,LinkedHashMap,TreeMap

HashMap,LinkedHashMap,TreeMap都属于Map Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。 HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 ...

哈希(Hash)、哈希表(Hash table)、哈希函数(Hash function)

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 若存在和关键字K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个事先建立的表为散列表( ...

hash & 0x7FFFFFFF

我查看了所有比较经典的常用哈希函数的实现,它们都使用了: hash & 0x7FFFFFFF 一个对象的 HashCode可以为负数,这样操作后可以保证它为一个正整数 0x7FFFFFFF 二进制位 0111 1111 1111 1111 1111 1111 1111 1111 (hash & 0x7FFFFFFF) 将会得到一个正整数 因为你的hash是要作为数组的index的,这样可以避免出现下标为负数而出现异常 ...

java.util.Collection java集合框架总结

写在前面 什么是集合,顾名思义,就是存放多个对象的。 那么,自然就需要往里添加对象add方法,删除对象remove方法,获取共有多少个对象size方法,等等... Collection(java.util.Collection)是一个接口,定义了这些方法,定义了集合规范,下图展示了所有Collection的方法: 一、Collection Collection的子接口有List Set Queue,他们各自都有一个抽象实现类AbstractCollection、AbstractList、AbstractSet、AbstractQueue, ...

DelayQueue怎么用

DelayQueue简介 DelayQueue 是一个无界阻塞队列,要添加进去的元素必须实现Delayed接口,只有在延迟期满时才能从中提取元素。 该队列的头部 是延迟期满后保存时间最长的 Delayed 元素。 如果延迟都还没有期满,则队列没有头部,并且 poll 将返回 null。 当一个元素的 getDelay(TimeUnit.NANOSECONDS) 方法返回一个小于等于 0 的值时,表示该元素到期了。 无法使用 take 或 ...