前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Guava-1.10类Equivalence

Guava-1.10类Equivalence

作者头像
悠扬前奏
发布2019-05-31 10:23:58
8740
发布2019-05-31 10:23:58
举报
文章被收录于专栏:悠扬前奏的博客

全路径名:

com.google.common.base Class Equivalence<T>

简介

一种判定两个实例是否相等的策略。

方法

equivalent
代码语言:javascript
复制
public final boolean equivalent(@NullableDecl T a, @NullableDecl T b)

如果判断两个对象相等,返回true。 该方法判断相等有以下特点:

  • 反身性(reflexive):对于任何参数x,包括null,equivalent(x, x) 为真。
  • 对称性(symmetric):对于任何参数x,y,equivalent(x, y) == equivalent(y, x)。
  • 传递性(transitive):对于任意参数x,y,z,如果equivalent(x, y)为真,equivalent(y, z),那么equivalent(x, z)应该返回真。
  • 持续性(consistent):对于任意参数x,y,多次执行equivalent(x, y)应该始终返回true或false。
doEquivalent
代码语言:javascript
复制
@ForOverride
protected abstract boolean doEquivalent(T var1, T var2);

如果var1和var2判定为相等,返回true。 由equivalent调用,var1和var2不是同一个对象且非空。

hash
代码语言:javascript
复制
public final int hash(@NullableDecl T t) {
        return t == null?0:this.doHash(t);
    }

返回一个对象的hash值:

  • 持续性(consistent):任意参数x,判定相等的定义没有变化的话,得到的hash值应该不变。相同应用的不同执行应该变化。
  • distributable accross equivalence:对于任意参数x,y,如果equivalent(x, y)返回真,那么hash(x) == hash(y)。反之不需要,也就是说,如果equivalence(x, y) 为假,hash(x) == hash(y)可以为真。
  • hash(null) == 0;
doHash
代码语言:javascript
复制
@ForOverride
protected abstract int doHash(T var1);

返回非空对象的hash值。

onResultOf
代码语言:javascript
复制
public final <F> Equivalence<F> onResultOf(Function<F, ? extends T> function)

为F返回一个相等关系,先对参数执行function,再判断。 也就是说,对于任意非空对象x、y,当equivalence.equivalent(function.apply(a), function.apply(b))结果为真,equivalence.onResultOf(function).equivalent(a, b)返回真。

wrap
代码语言:javascript
复制
public final <S extends T> Equivalence.Wrapper<S> wrap(@NullableDecl S reference)

返回reference的包装,实现了Object.equals()。这样当且仅当this.equivalent(a, b)返回真时,wrap(this, a).equals(wrap(this, b))为真.

pairwise
代码语言:javascript
复制
public final <S extends T> Equivalence<Iterable<S>> pairwise()

没看懂。。。。

equivalentTo
代码语言:javascript
复制
public final Predicate<T> equivalentTo(@NullableDecl T target)

返回一个断言,当且仅输入和target在该相等关系下判断相等。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.04.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 全路径名:
  • 简介
  • 方法
    • equivalent
      • doEquivalent
        • hash
          • doHash
            • onResultOf
              • wrap
                • pairwise
                  • equivalentTo
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档