摘要:
Collections类中提供了多个synchronizedXxx,该方法返回指定集合对象对应的同步对象,从而可以解决多线程并发访问集合时的线程安全问题.正如Java中常用的集合框架推荐使用的三个实现类:HashSet\ArrayList\HashMap都是线程不安全的.如果有多条线程访问它们,而且有超过一条的线程试图修改它们,则可能出现错务.Collections提供了多个静态方法用于创建同步集合下面程序创建了四个同步的集合对象import java.util.*;public classTestSynchronized{public static void main(String[] ar 阅读全文
posted @ 2012-07-19 20:26
Nolan
阅读(2258)
评论(0)
推荐(0)
摘要:
1) 为啥要用HahSet? 假如我们现在想要在一大堆数据中查找X数据。LinkedList的数据结构就不说了,查找效率低的可怕。ArrayList哪,如果我们不知道X的位置序号,还是一样要全部遍历一次直到查到结果,效率一样可怕。HashSet天生就是为了提高查找效率的。(2) hashCode 散列码 散列码是由对象导出的一个整数值。在Object中有一个hashCode方法来得到散列码。基本上,每一个对象都有一个默认的散列码,其值就是对象的内存地址。但也有一些对象的散列码不同,比如String对象,它的散列码是对内容的计算结果:Java代码//String对象的散列码计算Stringstr 阅读全文
posted @ 2012-07-19 20:22
Nolan
阅读(196)
评论(0)
推荐(0)
摘要:
虽然Java语言不直接支持关联数组 -- 可以使用任何对象作为一个索引的数组 -- 但在根Object类中使用hashCode()方法明确表示期望广泛使用HashMap(及其前辈Hashtable)。理想情况下基于散列的容器提供有效插入和有效检索;直接在对象模式中支持散列可以促进基于散列的容器的开发和使用。定义对象的相等性Object类有两种方法来推断对象的标识:equals()和hashCode()。一般来说,如果您忽略了其中一种,您必须同时忽略这两种,因为两者之间有必须维持的至关重要的关系。特殊情况是根据equals()方法,如果两个对象是相等的,它们必须有相同的hashCode()值(尽 阅读全文
posted @ 2012-07-19 20:21
Nolan
阅读(182)
评论(0)
推荐(0)
摘要:
学过算法的朋友都知道,散列可以在一定程序上提高查找效率,甚至可以压缩一些序列。Java中也有些集合都用到了它。下面先介绍一下散列。散列,也叫hash,即经常听到的哈希表。一般都是由一个固定长度的数组组成,经常会结合链表来实现。其实就是把任意长度的输入(即预映射,pre-image),通过特定的散列算法,变成固定长度的输出。最常用在信息安全领域的加密算法上面,但这里我们不讨论这个。 在散列时,结构中存在关键字K,则把它映射到f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为 散列函数(Hash function),按这个思想建立的表为散列表。 对不同的关键字可能得... 阅读全文
posted @ 2012-07-19 20:21
Nolan
阅读(453)
评论(0)
推荐(0)
浙公网安备 33010602011771号