红联Linux门户
Linux帮助

Java 理论与实践: 哈希

发布时间:2006-11-22 00:37:08来源:红联作者:Heroop
每个Java对象都有hashCode()和 equals()方法。许多类忽略(Override)这些方法的缺省实施,以在对象实例之间提供更深层次的语义可比性。在Java理念和实践这一部分,Java开发人员Brian Goetz向您介绍在创建Java类以有效和准确定义hashCode()和equals()时应遵循的规则和指南。您可以在讨论论坛与作者和其它读者一同探讨您对本文的看法。(您还可以点击本文顶部或底部的讨论进入论坛。)
虽然Java语言不直接支持关联数组 -- 可以使用任何对象作为一个索引的数组 -- 但在根Object类中使用hashCode()方法明确表示期望广泛使用HashMap(及其前辈Hashtable)。理想情况下基于散列的容器提供有效插入和有效检索;直接在对象模式中支持散列可以促进基于散列的容器的开发和使用。

定义对象的相等性
Object类有两种方法来推断对象的标识:equals()和hashCode()。一般来说,如果您忽略了其中一种,您必须同时忽略这两种,因为两者之间有必须维持的至关重要的关系。特殊情况是根据equals() 方法,如果两个对象是相等的,它们必须有相同的hashCode()值(尽管这通常不是真的)。

特定类的equals()的语义在Implementer的左侧定义;定义对特定类来说equals()意味着什么是其设计工作的一部分。Object提供的缺省实施简单引用下面等式:


public boolean equals(Object obj) { return (this == obj); }



在这种缺省实施情况下,只有它们引用真正同一个对象时这两个引用才是相等的。同样,Object提供的hashCode()的缺省实施通过将对象的内存地址对映于一个整数值来生成。由于在某些架构上,地址空间大于int值的范围,两个不同的对象有相同的hashCode()是可能的。如果您忽略了hashCode(),您仍旧可以使用System.identityHashCode()方法来接入这类缺省值。

忽略 equals() -- 简单实例
缺省情况下,equals()和hashCode()基于标识的实施是合理的,但对于某些类来说,它们希望放宽等式的定义。例如,Integer类定义equals() 与下面类似:


public boolean equals(Object obj) {
return (obj instanceof Integer
&& intValue() == ((Integer) obj).intValue());
}



在这个定义中,只有在包含相同的整数值的情况下这两个Integer对象是相等的。结合将不可修改的Integer,这使得使用Integer作为HashMap中的关键字是切实可行的。这种基于值的Equal方法可以由Java类库中的所有原始封装类使用,如Integer、Float、Character和Boolean以及String(如果两个String对象包含相同顺序的字符,那它们是相等的)。由于这些类都是不可修改的并且可以实施hashCode()和equals(),它们都可以做为很好的散列关键字。

为什么忽略 equals()和hashCode()?
如果Integer不忽略equals() 和 hashCode()情况又将如何?如果我们从未在HashMap或其它基于散列的集合中使用Integer作为关键字的话,什么也不会发生。但是,如果我们在HashMap中使用这类Integer对象作为关键字,我们将不能够可靠地检索相关的值,除非我们在get()调用中使用与put()调用中极其类似的Integer实例。这要求确保在我们的整个程序中,只能使用对应于特定整数值的Integer对象的一个实例。不用说,这种方法极不方便而且错误频频。

Object的interface contract要求如果根据 equals()两个对象是相等的,那么它们必须有相同的hashCode()值。当其识别能力整个包含在equals()中时,为什么我们的根对象类需要hashCode()?hashCode()方法纯粹用于提高效率。Java平台设计人员预计到了典型Java应用程序中基于散列的集合类(Collection Class)的重要性--如Hashtable、HashMap和HashSet,并且使用equals()与许多对象进行比较在计算方面非常昂贵。使所有Java对象都能够支持 hashCode()并结合使用基于散列的集合,可以实现有效的存储和检索。

实施equals()和hashCode()的需求
实施equals()和 hashCode()有一些限制,Object文件中列举出了这些限制。特别是equals()方法必须显示以下属性:

Symmetry:两个引用,a和 b,a.equals(b) if and only if b.equals(a)
Reflexivity:所有非空引用, a.equals(a)
Transitivity:If a.equals(b) and b.equals(c), then a.equals(c)
Consistency with hashCode():两个相等的对象必须有相同的hashCode()值
Object的规范中并没有明确要求equals()和 hashCode() 必须一致 -- 它们的结果在随后的调用中将是相同的,假设“不改变对象相等性比较中使用的任何信息。”这听起来象“计算的结果将不改变,除非实际情况如此。”这一模糊声明通常解释为相等性和散列值计算应是对象的可确定性功能,而不是其它。

对象相等性意味着什么?
人们很容易满足Object类规范对equals() 和 hashCode() 的要求。决定是否和如何忽略equals()除了判断以外,还要求其它。在简单的不可修值类中,如Integer(事实上是几乎所有不可修改的类),选择相当明显 -- 相等性应基于基本对象状态的相等性。在Integer情况下,对象的唯一状态是基本的整数值。

对于可修改对象来说,答案并不总是如此清楚。equals() 和hashCode() 是否应基于对象的标识(象缺省实施)或对象的状态(象Integer和String)?没有简单的答案 -- 它取决于类的计划使用。对于象List和Map这样的容器来说,人们对此争论不已。Java类库中的大多数类,包括容器类,错误出现在根据对象状态来提供equals()和hashCode()实施。

如果对象的hashCode()值可以基于其状态进行更改,那么当使用这类对象作为基于散列的集合中的关键字时我们必须注意,确保当它们用于作为散列关键字时,我们并不允许更改它们的状态。所有基于散列的集合假设,当对象的散列值用于作为集合中的关键字时它不会改变。如果当关键字在集合中时它的散列代码被更改,那么将产生一些不可预测和容易混淆的结果。实践过程中这通常不是问题 -- 我们并不经常使用象List这样的可修改对象做为HashMap中的关键字。

一个简单的可修改类的例子是Point,它根据状态来定义equals()和hashCode()。如果两个Point 对象引用相同的(x, y)座标,Point的散列值来源于x和y座标值的IEEE 754-bit表示,那么它们是相等的。

对于比较复杂的类来说,equals()和hashCode()的行为可能甚至受到superclass或interface的影响。例如,List接口要求如果并且只有另一个对象是List,而且它们有相同顺序的相同的Elements(由Element上的Object.equals() 定义),List对象等于另一个对象。hashCode()的需求更特殊--list的hashCode()值必须符合以下计算:


hashCode = 1;
Iterator i = list.iterator();
while (i.hasNext()) {
Object obj = i.next();
hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
}



不仅仅散列值取决于list的内容,而且还规定了结合各个Element的散列值的特殊算法。(String类规定类似的算法用于计算String的散列值。)

编写自己的equals()和hashCode()方法
忽略缺省的equals()方法比较简单,但如果不违反对称(Symmetry)或传递性(Transitivity)需求,忽略已经忽略的equals() 方法极其棘手。当忽略equals()时,您应该总是在equals()中包括一些Javadoc注释,以帮助那些希望能够正确扩展您的类的用户。

作为一个简单的例子,考虑以下类:


class A {
final B someNonNullField;
C someOtherField;
int someNonStateField;
}



我们应如何编写该类的equals()的方法?这种方法适用于许多情况:


public boolean equals(Object other) {
// Not strictly necessary, but often a good optimization
if (this == other)
return true;
if (!(other instanceof A))
return false;
A otherA = (A) other;
return
(someNonNullField.equals(otherA.someNonNullField))
&& ((someOtherField == null)
? otherA.someOtherField == null
: someOtherField.equals(otherA.someOtherField)));
}



现在我们定义了equals(),我们必须以统一的方法来定义hashCode()。一种统一但并不总是有效的定义hashCode()的方法如下:


public int hashCode() { return 0; }



这种方法将生成大量的条目并显著降低HashMaps的性能,但它符合规范。一个更合理的hashCode()实施应该是这样:


public int hashCode() {
int hash = 1;
hash = hash * 31 + someNonNullField.hashCode();
hash = hash * 31
+ (someOtherField == null ? 0 : someOtherField.hashCode());
return hash;
}



注意:这两种实施都降低了类状态字段的equals()或hashCode()方法一定比例的计算能力。根据您使用的类,您可能希望降低superclass的equals()或hashCode()功能一部分计算能力。对于原始字段来说,在相关的封装类中有helper功能,可以帮助创建散列值,如Float.floatToIntBits。

编写一个完美的equals()方法是不现实的。通常,当扩展一个自身忽略了equals()的instantiable类时,忽略equals()是不切实际的,而且编写将被忽略的equals()方法(如在抽象类中)不同于为具体类编写equals()方法。关于实例以及说明的更详细信息请参阅Effective Java Programming Language Guide, Item 7 (参考资料) 。

有待改进?
将散列法构建到Java类库的根对象类中是一种非常明智的设计折衷方法 -- 它使使用基于散列的容器变得如此简单和高效。但是,人们对Java类库中的散列算法和对象相等性的方法和实施提出了许多批评。java.util中基于散列的容器非常方便和简便易用,但可能不适用于需要非常高性能的应用程序。虽然其中大部分将不会改变,但当您设计严重依赖于基于散列的容器效率的应用程序时必须考虑这些因素,它们包括:

太小的散列范围。使用int而不是long作为hashCode()的返回类型增加了散列冲突的几率。


糟糕的散列值分配。短strings和小型integers的散列值是它们自己的小整数,接近于其它“邻近”对象的散列值。一个循规导矩(Well-behaved)的散列函数将在该散列范围内更均匀地分配散列值。


无定义的散列操作。虽然某些类,如String和List,定义了将其Element的散列值结合到一个散列值中使用的散列算法,但语言规范不定义将多个对象的散列值结合到新散列值中的任何批准的方法。我们在前面编写自己的equals()和hashCode()方法中讨论的List、String或实例类A使用的诀窍都很简单,但算术上还远远不够完美。类库不提供任何散列算法的方便实施,它可以简化更先进的hashCode()实施的创建。


当扩展已经忽略了equals()的 instantiable类时很难编写equals()。当扩展已经忽略了equals()的 instantiable类时,定义equals()的“显而易见的”方式都不能满足equals()方法的对称或传递性需求。这意味着当忽略equals()时,您必须了解您正在扩展的类的结构和实施详细信息,甚至需要暴露基本类中的机密字段,它违反了面向对象的设计的原则。
结束语
通过统一定义equals()和hashCode(),您可以提升类作为基于散列的集合中的关键字的使用性。有两种方法来定义对象的相等性和散列值:基于标识,它是Object提供的缺省方法;基于状态,它要求忽略equals()和hashCode()。当对象的状态更改时如果对象的散列值发生变化,确信当状态作为散列关键字使用时您不允许更更改其状态。
文章评论

共有 1848 条评论

  1. 76.22.21.* 于 2007-06-21 18:48:09发表:

    free baccarat casino baccarat http://www.freewebs.com/casino-53/baccarat-4.html http://www.westofthejordan.com/_disc1/00000139.htm sonic payday loan sonic payday loan free online craps free craps game http://www.freewebs.com/casino-31/craps-4.html online casino roulette online roulette poker http://www.freewebs.com/casino-87/roulette-2.html quick payday loan http://www.blenusmodels.com/_disc1/000004e2.htm quick payday loan

  2. 67.10.144.* 于 2007-06-21 17:42:32发表:

    payday loan http://www.ucasal.net/diplomatura/primera_edicion/10_construccion_detesina/_disc16/00000d28.htm payday loan fax payday loan fax payday loan http://www.gerritdirkmaat.com/_disc4/000000ed.htm http://www.freewebs.com/casino-76/keno-3.html online keno free keno games no credit check payday loan no credit check payday loan http://www.gaitedhorsebooks.com/_disc50/000007f7.htm online casino casino poker http://www.freewebs.com/casino-68/casino-3.html

  3. 162.66.255.* 于 2007-06-21 17:08:22发表:

    payday loan store payday loan store http://www.polishnetwork.com/polishnetwork/_disc1/000034b1.htm payday cash loan payday cash loan http://www.electrolab.net/discussion/_disc1/00005097.htm ameriloan payday loan ameriloan payday loan http://www.aunttee.com/Entries/00000040.htm free roulette http://www.freewebs.com/casino-87/roulette-6.html online roulette poker online keno internet keno http://www.freewebs.com/casino-68/keno-7.html

  4. 0.0.0.* 于 2007-06-21 16:23:30发表:

    play blackjack play blackjack http://www.freewebs.com/casino-66/blackjack-3.html sonic payday loan http://www.phimuepsilon.com/forum/_disc2/000039ed.htm sonic payday loan savings account payday loan savings account payday loan http://www.brahman.co.za/Discussion/_disc2/00002394.htm no credit check payday loan http://www.vikingnewz.org/web%20discussion/001/000000af.htm no credit check payday loan cash til payday loan cash til payday loan http://www.boatdrinx.com/discussion/astrid/Astriddisc/000004b2.htm

  5. 222.237.5.* 于 2007-06-21 15:14:30发表:

    http://statewide.vir.org/k12discuss/_disc1/00005350.htm no credit check payday loan no credit check payday loan http://www.freewebs.com/casino-44/roulette-7.html roulette gambling roulette gambling online craps online craps http://www.freewebs.com/casino-13/craps-5.html http://www.freewebs.com/casino-31/casino-3.html casino slots free casino games java blackjack free blackjack game http://www.freewebs.com/casino-87/blackjack-5.html

  6. 0.0.0.* 于 2007-06-21 15:07:41发表:

    http://www.freewebs.com/casino-44/keno-5.html free online keno video keno no credit check payday loan http://www.tryfontolides.com/_disc1/00001185.htm no credit check payday loan 7 card stud seven card stud http://www.freewebs.com/casino-44/card-stud-5.html online roulette game http://www.freewebs.com/casino-78/roulette-2.html internet roulette payday loan debt payday loan debt http://cpb5332.k12.sd.us/_disc1/0000002f.htm

  7. 69.248.20.* 于 2007-06-21 14:57:17发表:

    http://www.powerofhistory.com/_NorthKorea/00000072.htm payday loan payday loan payday loan debt payday loan debt http://freedomabc.com/FreeDiscussion/00000099.htm fast cash payday loan http://www.faxnet1.org/_gridbi12/00001abe.htm fast cash payday loan easy payday loan http://www.westernstars.org/_WesternStars/00000072.htm easy payday loan http://www.freewebs.com/casino-53/card-stud-7.html seven card stud 7 card stud

  8. 69.110.38.* 于 2007-06-21 14:40:50发表:

    no fax payday loan no fax payday loan http://amitechnologies-inc.com/_cusudi/000003c0.htm cash til payday loan cash til payday loan http://timeforaction.org/_disc2/00000edb.htm payday loan online payday loan online http://www.aromaticsage.com/_disc10/00000781.htm http://www.ssc.com.kw/DB/_disc1/00003d5e.htm no credit check payday loan no credit check payday loan baccarat game http://www.freewebs.com/casino-13/baccarat-7.html baccarat online

  9. 24.164.135.* 于 2007-06-21 14:36:46发表:

    http://www.rememberingheroes.org/_disc2/00001204.htm cash advance paydayloans cash advance paydayloans best online casino gambling online casino http://www.freewebs.com/casino-24/casino-6.html quik payday loan http://kreacom.com/_scd1/000000b3.htm quik payday loan roulette gambling play roulette online http://www.freewebs.com/casino-97/roulette-7.html ameriloan payday loan ameriloan payday loan http://www.dswa.org.uk/dswatalk/walling/00000963.htm

  10. 0.0.0.* 于 2007-06-21 14:26:52发表:

    baccarat game free online baccarat http://www.freewebs.com/casino-13/baccarat-6.html online baccarat http://www.freewebs.com/casino-68/baccarat-6.html play baccarat payday loan personal payday loan personal http://www.usechemicalssafely.com/_disc1/000000b3.htm free slots machine game free slots game http://www.freewebs.com/casino-24/slots-6.html casino craps how to play craps http://www.freewebs.com/casino-76/craps-3.html

  11. 0.0.0.* 于 2007-06-21 14:17:55发表:

    casino slots casino slots http://www.freewebs.com/casino-97/casino-3.html blogspot.com fax loan no payday site blogspot.com fax loan no payday site http://www.dconline.biz/lforum4/_disc42/0000052b.htm http://www.freewebs.com/casino-45/keno-3.html internet keno free keno games http://www.execsolutions.com/_disc4/000021e5.htm payday cash loan payday cash loan payday loan debt payday loan debt http://ocffarside.com/anything/00000077.htm

  12. 69.105.43.* 于 2007-06-21 14:17:51发表:

    casino slots casino slots http://www.freewebs.com/casino-97/casino-3.html blogspot.com fax loan no payday site blogspot.com fax loan no payday site http://www.dconline.biz/lforum4/_disc42/0000052b.htm http://www.freewebs.com/casino-45/keno-3.html internet keno free keno games http://www.execsolutions.com/_disc4/000021e5.htm payday cash loan payday cash loan payday loan debt payday loan debt http://ocffarside.com/anything/00000077.htm

  13. 68.55.18.* 于 2007-06-21 13:58:43发表:

    casino poker casino poker http://www.freewebs.com/casino-53/casino-6.html payday loan canada http://appledelights.com/Old/_disc4/000018e9.htm payday loan canada http://www.freewebs.com/casino-24/casino-7.html free casino free casino seven card stud seven card stud http://www.freewebs.com/casino-66/card-stud-4.html cheap payday loan cheap payday loan http://www.cskennedy.com/bhsclassof61/_BHSdisc1/00000099.htm

  14. 0.0.0.* 于 2007-06-21 13:57:41发表:

    online slots online casino slots http://www.freewebs.com/casino-97/slots-3.html http://www.bong-hit.com/_BongBuzz/00000dc2.htm payday loan debt payday loan debt blogspot.com loan payday site blogspot.com loan payday site http://www.vikingnewz.org/web%20discussion/001/000000ad.htm free keno games http://www.freewebs.com/casino-31/keno-3.html free keno games http://www.agap-trento.org/_disc19/00001a45.htm payday cash loan payday cash loan

  15. 0.0.0.* 于 2007-06-21 13:44:05发表:

    7 card stud 7 card stud http://www.freewebs.com/casino-97/card-stud-6.html http://www.execsolutions.com/_disc4/000021e6.htm bad debt loan payday bad debt loan payday bad debt loan payday bad debt loan payday http://www.mamm-mariag.it/_disc12/000000fd.htm free casino http://www.freewebs.com/casino-97/casino-2.html casino gambling no fax payday loan no fax payday loan http://mycropthorne.co.uk/Forum/ParishPlan/0000005e.htm

  16. 0.0.0.* 于 2007-06-20 13:02:39发表:

    craps table http://www.freewebs.com/casino-13/craps-2.html craps table savings account payday loan savings account payday loan http://www.classicmullet.com/_disc2/000024a7.htm fast cash payday loan fast cash payday loan http://rlstaton.com/mymessageboard/_disc2/00001c44.htm payday loan 1000 payday loan 1000 http://www.mcap.ms/_mcap1/00000080.htm no teletrack payday loan no teletrack payday loan http://www.peter-buswell.com/TheGreatConspiracy/00000c82.htm

  17. 0.0.0.* 于 2007-06-20 13:00:21发表:

    7 card stud seven card stud http://www.freewebs.com/casino-13/card-stud-7.html sonic payday loan http://www.hc.idv.tw/talkweb/_disc1/00000009.htm sonic payday loan payday loan store payday loan store http://www.marysvilleteachers.org/forum/_MUTAdiscussion/00000689.htm loan til payday http://www.impexo.se/_disc2/00000d02.htm loan til payday instant faxless payday loan instant faxless payday loan http://www.aterhamtning.se/_disc9/00006f4e.htm

  18. 24.79.236.* 于 2007-06-20 12:53:18发表:

    cheap payday loan cheap payday loan http://www.theinboxcafe.com/_disc1/000000a1.htm payday cash advance payday cash advance http://www.ragazzinet.it/Forum/Animali/_disc1/00000195.htm baccarat game http://www.freewebs.com/casino-76/baccarat-3.html baccarat game cash til payday loan cash til payday loan http://www.cocoanutheads.com/_discussion-group/0000009b.htm keno online free keno games http://www.freewebs.com/casino-44/keno-6.html

  19. 0.0.0.* 于 2007-06-20 12:50:43发表:

    http://www.freewebs.com/casino-76/card-stud-1.html seven card stud seven card stud online keno internet keno http://www.freewebs.com/casino-82/keno-6.html faxless payday loan faxless payday loan http://www.aunttee.com/Entries/0000003e.htm fast cash payday loan http://www.elfrank.com/Blog/_disc1/00000c23.htm fast cash payday loan cash til payday loan cash til payday loan http://www.kentpullen.com/_disc1KentPullen/000001f7.htm

  20. 0.0.0.* 于 2007-06-20 12:37:00发表:

    slots online play slots http://www.freewebs.com/casino-45/slots-2.html payday loan online payday loan online http://www.broncohut.com/_Trucks/00004d74.htm 7 card stud seven card stud http://www.freewebs.com/casino-44/card-stud-7.html payday loan debt payday loan debt http://www.alessiamore.it/file%20nascosti/_disc10/00000258.htm cash advance payday loan http://vip-membersfp.webc.lyceu.net/www.ez4u.se/_disc1/0000002c.htm cash advance payday loan

  21. 74.114.37.* 于 2007-06-20 11:13:14发表:

    free slots machine free online slots http://www.freewebs.com/casino-97/slots-6.html http://www.wildlocals.com/_disc1/00001253.htm ameriloan payday loan ameriloan payday loan quick payday loan http://www.brahman.co.za/Discussion/_disc2/00002393.htm quick payday loan best online casino gambling best online casino gambling http://www.freewebs.com/casino-24/casino-5.html http://thebluesband.com/webforum/_disc23/00003b63.htm instant faxless payday loan instant faxless payday loan

  22. 69.181.234.* 于 2007-06-20 09:30:42发表:

    http://www.pfm.com.hk/_disc4/00002c4e.htm money tree payday loan money tree payday loan instant faxless payday loan instant faxless payday loan http://www.southatlantatouringgroup.com/MessageBoard/0000042d.htm online keno internet keno http://www.freewebs.com/casino-41/keno-3.html online payday loan online payday loan http://www.grevemidtby.dk/Diskussion/000000c3.htm casino baccarat casino baccarat http://www.freewebs.com/casino-66/baccarat-2.html

  23. 75.35.22.* 于 2007-06-20 08:35:09发表:

    quik payday loan quik payday loan http://kreacom.com/_scd1/000000b3.htm ameriloan payday loan http://www.dswa.org.uk/dswatalk/walling/00000963.htm ameriloan payday loan roulette table http://www.freewebs.com/casino-97/roulette-7.html online roulette poker cash advance paydayloans cash advance paydayloans http://www.rememberingheroes.org/_disc2/00001204.htm http://www.freewebs.com/casino-24/casino-6.html online casino game online casino

  24. 74.194.12.* 于 2007-06-20 05:33:45发表:

    7 card stud http://www.freewebs.com/casino-66/card-stud-3.html seven card stud roulette game free roulette game http://www.freewebs.com/casino-68/roulette-4.html http://www.thelazaruslives.com/Racism%20Discussion%20Forum/Racism/0000003f.htm blogspot.com loan payday site blogspot.com loan payday site http://www.freewebs.com/casino-87/roulette-4.html roulette online free roulette free casino games free casino games http://www.freewebs.com/casino-24/casino-2.html

  25. 70.73.233.* 于 2007-06-20 05:27:00发表:

    video keno free keno http://www.freewebs.com/casino-45/keno-4.html baccarat online play baccarat http://www.freewebs.com/casino-68/baccarat-5.html http://www.freewebs.com/casino-53/slots-2.html casino slots free casino slots http://www.freewebs.com/casino-24/slots-2.html slots online slots machine game http://www.freewebs.com/casino-97/roulette-2.html online roulette online roulette

  26. 70.112.32.* 于 2007-06-20 05:25:17发表:

    fax payday loan fax payday loan http://www.dfs-fuchsia.dk/_disc1/00004f58.htm quick payday loan quick payday loan http://www.hackwith.com/blog/_disc1/000026e4.htm fast payday loan fast payday loan http://www.vikingnewz.org/web%20discussion/001/000000ae.htm cash advance payday loan cash advance payday loan http://vip-membersfp.webc.lyceu.net/www.ez4u.se/_disc1/0000002d.htm no credit check payday loan no credit check payday loan http://www.duderanchontario.com/_disc1/000008ba.htm

  27. 66.176.94.* 于 2007-06-20 02:26:03发表:

    online keno http://www.freewebs.com/casino-78/keno-2.html free keno games payday loan online payday loan online http://suggeststuff.com/suggeststuff/0000004e.htm blogspot.com fax loan no payday site http://www.usechemicalssafely.com/_disc1/000000b1.htm blogspot.com fax loan no payday site payday loan online payday loan online http://www.azodchat.com/freshwaterclassifieds/_disc24/0000055a.htm http://www.freewebs.com/casino-24/baccarat-5.html play baccarat baccarat online

  28. 83.251.139.* 于 2007-06-20 01:32:34发表:

    online payday loan online payday loan http://www.socialnetworkforseniors.com/Poetry/0000004d.htm http://www.freewebs.com/casino-78/keno-4.html keno casino free keno games online roulette game http://www.freewebs.com/casino-89/roulette-3.html online roulette game http://faculty.mckendree.edu/frs/_disc5/00005950.htm fax payday loan fax payday loan ez payday loan http://www.imagination-institute.com/askthedoc/_askdoc/00000de7.htm ez payday loan

  29. 0.0.0.* 于 2007-06-20 01:31:25发表:

    http://www.freewebs.com/casino-31/slots-5.html online casino slots free slots machine online casino blackjack free blackjack game http://www.freewebs.com/casino-31/blackjack-1.html savings account payday loan savings account payday loan http://larryshaw.com/mysite/_disc2/00002fdb.htm payday loan on line payday loan on line http://rockcreekneighbor.net/_bulletinboard/000004b6.htm http://www.bikecenterpr.com/_disc2/000019bf.htm bad credit payday loan bad credit payday loan

  30. 0.0.0.* 于 2007-06-20 01:26:14发表:

    video slots video slots http://www.freewebs.com/casino-89/slots-1.html http://www.scagliotti.net/_disc1/000019ec.htm same day payday loan same day payday loan fax payday loan fax payday loan http://cb3057.k12.sd.us/_disc1/0000002b.htm http://www.labarbabietola.it/forum/forum/000009f6.htm cheap payday loan cheap payday loan 7 card stud seven card stud http://www.freewebs.com/casino-13/card-stud-4.html

  31. 65.24.26.* 于 2007-06-20 00:58:38发表:

    play keno online keno casino http://www.freewebs.com/casino-31/keno-4.html http://www.trueranger.com/_disc1/00004238.htm loan till payday loan till payday las vegas casino casino slots http://www.freewebs.com/casino-97/casino-1.html loan til payday loan til payday http://www.otegolittleleague.org/discussion/_disc1/00000db5.htm free online keno http://www.freewebs.com/casino-45/keno-5.html internet keno