You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by Claude Warren <cl...@xenei.com> on 2014/11/04 09:19:53 UTC

Re: git commit: hashCode and .equals (auto-generated)

Andy,

You might consider caching the hash code once it is calculated.  I assume
you use this object in hash maps or hash sets where the hash code needs to
be retrieve many times - O(log(n)?  per operation.  In this case caching
may show a performance improvement.

Claude

On Mon, Nov 3, 2014 at 8:24 PM, <an...@apache.org> wrote:

> Repository: jena
> Updated Branches:
>   refs/heads/master 1f2642ad1 -> be8f0aea6
>
>
> hashCode and .equals (auto-generated)
>
> Project: http://git-wip-us.apache.org/repos/asf/jena/repo
> Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/be8f0aea
> Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/be8f0aea
> Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/be8f0aea
>
> Branch: refs/heads/master
> Commit: be8f0aea68df5caecc287ca612d7af00231d553f
> Parents: 1f2642a
> Author: Andy Seaborne <an...@apache.org>
> Authored: Mon Nov 3 20:24:30 2014 +0000
> Committer: Andy Seaborne <an...@apache.org>
> Committed: Mon Nov 3 20:24:30 2014 +0000
>
> ----------------------------------------------------------------------
>  .../com/hp/hpl/jena/tdb/setup/StoreParams.java  | 99 ++++++++++++++++++++
>  1 file changed, 99 insertions(+)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/jena/blob/be8f0aea/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
> ----------------------------------------------------------------------
> diff --git
> a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
> b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
> index 63fdef5..7c1829b 100644
> --- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
> +++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
> @@ -18,6 +18,8 @@
>
>  package com.hp.hpl.jena.tdb.setup;
>
> +import java.util.Arrays ;
> +
>  import org.apache.jena.atlas.lib.StrUtils ;
>
>  import com.hp.hpl.jena.tdb.base.block.FileMode ;
> @@ -207,5 +209,102 @@ public class StoreParams implements IndexParams
>          buff.append(String.format("%-20s   %s\n", name, value)) ;
>      }
>
> +    @Override
> +    public int hashCode() {
> +        final int prime = 31 ;
> +        int result = 1 ;
> +        result = prime * result + Node2NodeIdCacheSize ;
> +        result = prime * result + NodeId2NodeCacheSize ;
> +        result = prime * result + NodeMissCacheSize ;
> +        result = prime * result + blockReadCacheSize ;
> +        result = prime * result + blockSize ;
> +        result = prime * result + blockWriteCacheSize ;
> +        result = prime * result + ((fileMode == null) ? 0 :
> fileMode.hashCode()) ;
> +        result = prime * result + ((indexId2Node == null) ? 0 :
> indexId2Node.hashCode()) ;
> +        result = prime * result + ((indexNode2Id == null) ? 0 :
> indexNode2Id.hashCode()) ;
> +        result = prime * result + ((indexPrefix == null) ? 0 :
> indexPrefix.hashCode()) ;
> +        result = prime * result + ((prefixId2Node == null) ? 0 :
> prefixId2Node.hashCode()) ;
> +        result = prime * result + Arrays.hashCode(prefixIndexes) ;
> +        result = prime * result + ((prefixNode2Id == null) ? 0 :
> prefixNode2Id.hashCode()) ;
> +        result = prime * result + ((primaryIndexPrefix == null) ? 0 :
> primaryIndexPrefix.hashCode()) ;
> +        result = prime * result + ((primaryIndexQuads == null) ? 0 :
> primaryIndexQuads.hashCode()) ;
> +        result = prime * result + ((primaryIndexTriples == null) ? 0 :
> primaryIndexTriples.hashCode()) ;
> +        result = prime * result + Arrays.hashCode(quadIndexes) ;
> +        result = prime * result + Arrays.hashCode(tripleIndexes) ;
> +        return result ;
> +    }
> +
> +    @Override
> +    public boolean equals(Object obj) {
> +        if ( this == obj )
> +            return true ;
> +        if ( obj == null )
> +            return false ;
> +        if ( getClass() != obj.getClass() )
> +            return false ;
> +        StoreParams other = (StoreParams)obj ;
> +        if ( Node2NodeIdCacheSize != other.Node2NodeIdCacheSize )
> +            return false ;
> +        if ( NodeId2NodeCacheSize != other.NodeId2NodeCacheSize )
> +            return false ;
> +        if ( NodeMissCacheSize != other.NodeMissCacheSize )
> +            return false ;
> +        if ( blockReadCacheSize != other.blockReadCacheSize )
> +            return false ;
> +        if ( blockSize != other.blockSize )
> +            return false ;
> +        if ( blockWriteCacheSize != other.blockWriteCacheSize )
> +            return false ;
> +        if ( fileMode != other.fileMode )
> +            return false ;
> +        if ( indexId2Node == null ) {
> +            if ( other.indexId2Node != null )
> +                return false ;
> +        } else if ( !indexId2Node.equals(other.indexId2Node) )
> +            return false ;
> +        if ( indexNode2Id == null ) {
> +            if ( other.indexNode2Id != null )
> +                return false ;
> +        } else if ( !indexNode2Id.equals(other.indexNode2Id) )
> +            return false ;
> +        if ( indexPrefix == null ) {
> +            if ( other.indexPrefix != null )
> +                return false ;
> +        } else if ( !indexPrefix.equals(other.indexPrefix) )
> +            return false ;
> +        if ( prefixId2Node == null ) {
> +            if ( other.prefixId2Node != null )
> +                return false ;
> +        } else if ( !prefixId2Node.equals(other.prefixId2Node) )
> +            return false ;
> +        if ( !Arrays.equals(prefixIndexes, other.prefixIndexes) )
> +            return false ;
> +        if ( prefixNode2Id == null ) {
> +            if ( other.prefixNode2Id != null )
> +                return false ;
> +        } else if ( !prefixNode2Id.equals(other.prefixNode2Id) )
> +            return false ;
> +        if ( primaryIndexPrefix == null ) {
> +            if ( other.primaryIndexPrefix != null )
> +                return false ;
> +        } else if ( !primaryIndexPrefix.equals(other.primaryIndexPrefix) )
> +            return false ;
> +        if ( primaryIndexQuads == null ) {
> +            if ( other.primaryIndexQuads != null )
> +                return false ;
> +        } else if ( !primaryIndexQuads.equals(other.primaryIndexQuads) )
> +            return false ;
> +        if ( primaryIndexTriples == null ) {
> +            if ( other.primaryIndexTriples != null )
> +                return false ;
> +        } else if (
> !primaryIndexTriples.equals(other.primaryIndexTriples) )
> +            return false ;
> +        if ( !Arrays.equals(quadIndexes, other.quadIndexes) )
> +            return false ;
> +        if ( !Arrays.equals(tripleIndexes, other.tripleIndexes) )
> +            return false ;
> +        return true ;
> +    }
> +
>  }
>
>
>


-- 
I like: Like Like - The likeliest place on the web
<http://like-like.xenei.com>
LinkedIn: http://www.linkedin.com/in/claudewarren

Re: git commit: hashCode and .equals (auto-generated)

Posted by Claude Warren <cl...@xenei.com>.
I would use lazy initialization.  Since the hash should not change once the
object is created you can use:

private Integer hash = null;

then in hashCode()
{
  retrurn (hash == null)?calculateHash():hash;
}



private Integer calculcateHash()
{
  // your hash calculation here
  this.hash = hashResult;
  return this.hash;

}


Since the hash does not change calculating it multiple times will not
result in an error thus synchronization is not required.


On Tue, Nov 4, 2014 at 9:28 AM, Andy Seaborne <an...@apache.org> wrote:

> On 04/11/14 08:19, Claude Warren wrote:
>
>> Andy,
>>
>> You might consider caching the hash code once it is calculated.  I assume
>> you use this object in hash maps or hash sets where the hash code needs to
>> be retrieve many times - O(log(n)?  per operation.  In this case caching
>> may show a performance improvement.
>>
>> Claude
>>
>
> What is the best idiom for doing that?  I've done it before caching to a
> long so a MAX_VALUE is outside the range of a hash
>
> This class is not performance critical.  It will be used briefly when
> creating TDB datasets. Actually, it's unlikely to be store in hash XYZs.
> Except for the (short <=4) arrays, the operations are quite cheap.
>
>         Andy
>
>
>
>> On Mon, Nov 3, 2014 at 8:24 PM, <an...@apache.org> wrote:
>>
>>  Repository: jena
>>> Updated Branches:
>>>    refs/heads/master 1f2642ad1 -> be8f0aea6
>>>
>>>
>>> hashCode and .equals (auto-generated)
>>>
>>> Project: http://git-wip-us.apache.org/repos/asf/jena/repo
>>> Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/be8f0aea
>>> Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/be8f0aea
>>> Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/be8f0aea
>>>
>>> Branch: refs/heads/master
>>> Commit: be8f0aea68df5caecc287ca612d7af00231d553f
>>> Parents: 1f2642a
>>> Author: Andy Seaborne <an...@apache.org>
>>> Authored: Mon Nov 3 20:24:30 2014 +0000
>>> Committer: Andy Seaborne <an...@apache.org>
>>> Committed: Mon Nov 3 20:24:30 2014 +0000
>>>
>>> ----------------------------------------------------------------------
>>>   .../com/hp/hpl/jena/tdb/setup/StoreParams.java  | 99
>>> ++++++++++++++++++++
>>>   1 file changed, 99 insertions(+)
>>> ----------------------------------------------------------------------
>>>
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/jena/blob/be8f0aea/
>>> jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
>>> b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
>>> index 63fdef5..7c1829b 100644
>>> --- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
>>> +++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
>>> @@ -18,6 +18,8 @@
>>>
>>>   package com.hp.hpl.jena.tdb.setup;
>>>
>>> +import java.util.Arrays ;
>>> +
>>>   import org.apache.jena.atlas.lib.StrUtils ;
>>>
>>>   import com.hp.hpl.jena.tdb.base.block.FileMode ;
>>> @@ -207,5 +209,102 @@ public class StoreParams implements IndexParams
>>>           buff.append(String.format("%-20s   %s\n", name, value)) ;
>>>       }
>>>
>>> +    @Override
>>> +    public int hashCode() {
>>> +        final int prime = 31 ;
>>> +        int result = 1 ;
>>> +        result = prime * result + Node2NodeIdCacheSize ;
>>> +        result = prime * result + NodeId2NodeCacheSize ;
>>> +        result = prime * result + NodeMissCacheSize ;
>>> +        result = prime * result + blockReadCacheSize ;
>>> +        result = prime * result + blockSize ;
>>> +        result = prime * result + blockWriteCacheSize ;
>>> +        result = prime * result + ((fileMode == null) ? 0 :
>>> fileMode.hashCode()) ;
>>> +        result = prime * result + ((indexId2Node == null) ? 0 :
>>> indexId2Node.hashCode()) ;
>>> +        result = prime * result + ((indexNode2Id == null) ? 0 :
>>> indexNode2Id.hashCode()) ;
>>> +        result = prime * result + ((indexPrefix == null) ? 0 :
>>> indexPrefix.hashCode()) ;
>>> +        result = prime * result + ((prefixId2Node == null) ? 0 :
>>> prefixId2Node.hashCode()) ;
>>> +        result = prime * result + Arrays.hashCode(prefixIndexes) ;
>>> +        result = prime * result + ((prefixNode2Id == null) ? 0 :
>>> prefixNode2Id.hashCode()) ;
>>> +        result = prime * result + ((primaryIndexPrefix == null) ? 0 :
>>> primaryIndexPrefix.hashCode()) ;
>>> +        result = prime * result + ((primaryIndexQuads == null) ? 0 :
>>> primaryIndexQuads.hashCode()) ;
>>> +        result = prime * result + ((primaryIndexTriples == null) ? 0 :
>>> primaryIndexTriples.hashCode()) ;
>>> +        result = prime * result + Arrays.hashCode(quadIndexes) ;
>>> +        result = prime * result + Arrays.hashCode(tripleIndexes) ;
>>> +        return result ;
>>> +    }
>>> +
>>> +    @Override
>>> +    public boolean equals(Object obj) {
>>> +        if ( this == obj )
>>> +            return true ;
>>> +        if ( obj == null )
>>> +            return false ;
>>> +        if ( getClass() != obj.getClass() )
>>> +            return false ;
>>> +        StoreParams other = (StoreParams)obj ;
>>> +        if ( Node2NodeIdCacheSize != other.Node2NodeIdCacheSize )
>>> +            return false ;
>>> +        if ( NodeId2NodeCacheSize != other.NodeId2NodeCacheSize )
>>> +            return false ;
>>> +        if ( NodeMissCacheSize != other.NodeMissCacheSize )
>>> +            return false ;
>>> +        if ( blockReadCacheSize != other.blockReadCacheSize )
>>> +            return false ;
>>> +        if ( blockSize != other.blockSize )
>>> +            return false ;
>>> +        if ( blockWriteCacheSize != other.blockWriteCacheSize )
>>> +            return false ;
>>> +        if ( fileMode != other.fileMode )
>>> +            return false ;
>>> +        if ( indexId2Node == null ) {
>>> +            if ( other.indexId2Node != null )
>>> +                return false ;
>>> +        } else if ( !indexId2Node.equals(other.indexId2Node) )
>>> +            return false ;
>>> +        if ( indexNode2Id == null ) {
>>> +            if ( other.indexNode2Id != null )
>>> +                return false ;
>>> +        } else if ( !indexNode2Id.equals(other.indexNode2Id) )
>>> +            return false ;
>>> +        if ( indexPrefix == null ) {
>>> +            if ( other.indexPrefix != null )
>>> +                return false ;
>>> +        } else if ( !indexPrefix.equals(other.indexPrefix) )
>>> +            return false ;
>>> +        if ( prefixId2Node == null ) {
>>> +            if ( other.prefixId2Node != null )
>>> +                return false ;
>>> +        } else if ( !prefixId2Node.equals(other.prefixId2Node) )
>>> +            return false ;
>>> +        if ( !Arrays.equals(prefixIndexes, other.prefixIndexes) )
>>> +            return false ;
>>> +        if ( prefixNode2Id == null ) {
>>> +            if ( other.prefixNode2Id != null )
>>> +                return false ;
>>> +        } else if ( !prefixNode2Id.equals(other.prefixNode2Id) )
>>> +            return false ;
>>> +        if ( primaryIndexPrefix == null ) {
>>> +            if ( other.primaryIndexPrefix != null )
>>> +                return false ;
>>> +        } else if ( !primaryIndexPrefix.equals(other.primaryIndexPrefix)
>>> )
>>> +            return false ;
>>> +        if ( primaryIndexQuads == null ) {
>>> +            if ( other.primaryIndexQuads != null )
>>> +                return false ;
>>> +        } else if ( !primaryIndexQuads.equals(other.primaryIndexQuads)
>>> )
>>> +            return false ;
>>> +        if ( primaryIndexTriples == null ) {
>>> +            if ( other.primaryIndexTriples != null )
>>> +                return false ;
>>> +        } else if (
>>> !primaryIndexTriples.equals(other.primaryIndexTriples) )
>>> +            return false ;
>>> +        if ( !Arrays.equals(quadIndexes, other.quadIndexes) )
>>> +            return false ;
>>> +        if ( !Arrays.equals(tripleIndexes, other.tripleIndexes) )
>>> +            return false ;
>>> +        return true ;
>>> +    }
>>> +
>>>   }
>>>
>>>
>>>
>>>
>>
>>
>


-- 
I like: Like Like - The likeliest place on the web
<http://like-like.xenei.com>
LinkedIn: http://www.linkedin.com/in/claudewarren

Re: git commit: hashCode and .equals (auto-generated)

Posted by Andy Seaborne <an...@apache.org>.
On 04/11/14 08:19, Claude Warren wrote:
> Andy,
>
> You might consider caching the hash code once it is calculated.  I assume
> you use this object in hash maps or hash sets where the hash code needs to
> be retrieve many times - O(log(n)?  per operation.  In this case caching
> may show a performance improvement.
>
> Claude

What is the best idiom for doing that?  I've done it before caching to a 
long so a MAX_VALUE is outside the range of a hash

This class is not performance critical.  It will be used briefly when 
creating TDB datasets. Actually, it's unlikely to be store in hash XYZs. 
  Except for the (short <=4) arrays, the operations are quite cheap.

	Andy

>
> On Mon, Nov 3, 2014 at 8:24 PM, <an...@apache.org> wrote:
>
>> Repository: jena
>> Updated Branches:
>>    refs/heads/master 1f2642ad1 -> be8f0aea6
>>
>>
>> hashCode and .equals (auto-generated)
>>
>> Project: http://git-wip-us.apache.org/repos/asf/jena/repo
>> Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/be8f0aea
>> Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/be8f0aea
>> Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/be8f0aea
>>
>> Branch: refs/heads/master
>> Commit: be8f0aea68df5caecc287ca612d7af00231d553f
>> Parents: 1f2642a
>> Author: Andy Seaborne <an...@apache.org>
>> Authored: Mon Nov 3 20:24:30 2014 +0000
>> Committer: Andy Seaborne <an...@apache.org>
>> Committed: Mon Nov 3 20:24:30 2014 +0000
>>
>> ----------------------------------------------------------------------
>>   .../com/hp/hpl/jena/tdb/setup/StoreParams.java  | 99 ++++++++++++++++++++
>>   1 file changed, 99 insertions(+)
>> ----------------------------------------------------------------------
>>
>>
>>
>> http://git-wip-us.apache.org/repos/asf/jena/blob/be8f0aea/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
>> b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
>> index 63fdef5..7c1829b 100644
>> --- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
>> +++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
>> @@ -18,6 +18,8 @@
>>
>>   package com.hp.hpl.jena.tdb.setup;
>>
>> +import java.util.Arrays ;
>> +
>>   import org.apache.jena.atlas.lib.StrUtils ;
>>
>>   import com.hp.hpl.jena.tdb.base.block.FileMode ;
>> @@ -207,5 +209,102 @@ public class StoreParams implements IndexParams
>>           buff.append(String.format("%-20s   %s\n", name, value)) ;
>>       }
>>
>> +    @Override
>> +    public int hashCode() {
>> +        final int prime = 31 ;
>> +        int result = 1 ;
>> +        result = prime * result + Node2NodeIdCacheSize ;
>> +        result = prime * result + NodeId2NodeCacheSize ;
>> +        result = prime * result + NodeMissCacheSize ;
>> +        result = prime * result + blockReadCacheSize ;
>> +        result = prime * result + blockSize ;
>> +        result = prime * result + blockWriteCacheSize ;
>> +        result = prime * result + ((fileMode == null) ? 0 :
>> fileMode.hashCode()) ;
>> +        result = prime * result + ((indexId2Node == null) ? 0 :
>> indexId2Node.hashCode()) ;
>> +        result = prime * result + ((indexNode2Id == null) ? 0 :
>> indexNode2Id.hashCode()) ;
>> +        result = prime * result + ((indexPrefix == null) ? 0 :
>> indexPrefix.hashCode()) ;
>> +        result = prime * result + ((prefixId2Node == null) ? 0 :
>> prefixId2Node.hashCode()) ;
>> +        result = prime * result + Arrays.hashCode(prefixIndexes) ;
>> +        result = prime * result + ((prefixNode2Id == null) ? 0 :
>> prefixNode2Id.hashCode()) ;
>> +        result = prime * result + ((primaryIndexPrefix == null) ? 0 :
>> primaryIndexPrefix.hashCode()) ;
>> +        result = prime * result + ((primaryIndexQuads == null) ? 0 :
>> primaryIndexQuads.hashCode()) ;
>> +        result = prime * result + ((primaryIndexTriples == null) ? 0 :
>> primaryIndexTriples.hashCode()) ;
>> +        result = prime * result + Arrays.hashCode(quadIndexes) ;
>> +        result = prime * result + Arrays.hashCode(tripleIndexes) ;
>> +        return result ;
>> +    }
>> +
>> +    @Override
>> +    public boolean equals(Object obj) {
>> +        if ( this == obj )
>> +            return true ;
>> +        if ( obj == null )
>> +            return false ;
>> +        if ( getClass() != obj.getClass() )
>> +            return false ;
>> +        StoreParams other = (StoreParams)obj ;
>> +        if ( Node2NodeIdCacheSize != other.Node2NodeIdCacheSize )
>> +            return false ;
>> +        if ( NodeId2NodeCacheSize != other.NodeId2NodeCacheSize )
>> +            return false ;
>> +        if ( NodeMissCacheSize != other.NodeMissCacheSize )
>> +            return false ;
>> +        if ( blockReadCacheSize != other.blockReadCacheSize )
>> +            return false ;
>> +        if ( blockSize != other.blockSize )
>> +            return false ;
>> +        if ( blockWriteCacheSize != other.blockWriteCacheSize )
>> +            return false ;
>> +        if ( fileMode != other.fileMode )
>> +            return false ;
>> +        if ( indexId2Node == null ) {
>> +            if ( other.indexId2Node != null )
>> +                return false ;
>> +        } else if ( !indexId2Node.equals(other.indexId2Node) )
>> +            return false ;
>> +        if ( indexNode2Id == null ) {
>> +            if ( other.indexNode2Id != null )
>> +                return false ;
>> +        } else if ( !indexNode2Id.equals(other.indexNode2Id) )
>> +            return false ;
>> +        if ( indexPrefix == null ) {
>> +            if ( other.indexPrefix != null )
>> +                return false ;
>> +        } else if ( !indexPrefix.equals(other.indexPrefix) )
>> +            return false ;
>> +        if ( prefixId2Node == null ) {
>> +            if ( other.prefixId2Node != null )
>> +                return false ;
>> +        } else if ( !prefixId2Node.equals(other.prefixId2Node) )
>> +            return false ;
>> +        if ( !Arrays.equals(prefixIndexes, other.prefixIndexes) )
>> +            return false ;
>> +        if ( prefixNode2Id == null ) {
>> +            if ( other.prefixNode2Id != null )
>> +                return false ;
>> +        } else if ( !prefixNode2Id.equals(other.prefixNode2Id) )
>> +            return false ;
>> +        if ( primaryIndexPrefix == null ) {
>> +            if ( other.primaryIndexPrefix != null )
>> +                return false ;
>> +        } else if ( !primaryIndexPrefix.equals(other.primaryIndexPrefix) )
>> +            return false ;
>> +        if ( primaryIndexQuads == null ) {
>> +            if ( other.primaryIndexQuads != null )
>> +                return false ;
>> +        } else if ( !primaryIndexQuads.equals(other.primaryIndexQuads) )
>> +            return false ;
>> +        if ( primaryIndexTriples == null ) {
>> +            if ( other.primaryIndexTriples != null )
>> +                return false ;
>> +        } else if (
>> !primaryIndexTriples.equals(other.primaryIndexTriples) )
>> +            return false ;
>> +        if ( !Arrays.equals(quadIndexes, other.quadIndexes) )
>> +            return false ;
>> +        if ( !Arrays.equals(tripleIndexes, other.tripleIndexes) )
>> +            return false ;
>> +        return true ;
>> +    }
>> +
>>   }
>>
>>
>>
>
>