[ 
https://issues.apache.org/jira/browse/MATH-786?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13269075#comment-13269075
 ] 

Gilles commented on MATH-786:
-----------------------------

OK.

Then assuming that it's the user's responsibility to not mutate the passed 
references, it seems reasonable to _optionally_ allow the performance gain of 
computing the hash code at construction, by having a flag in the constructor's 
parameter list:
{noformat}
public Pair(K k, V v, boolean assumeImmutable) {
    key = k;
    value = v;
    immutable = assumeImmutable;
    hashCode = computeHashCode();
}
{noformat}

Then, we'd have:
{noformat}
public int hashCode() {
    return immutable ? hashCode : computeHashCode();
}
{noformat}

What do you think?

                
> "hashCode" in "Pair" class
> --------------------------
>
>                 Key: MATH-786
>                 URL: https://issues.apache.org/jira/browse/MATH-786
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: 3.0
>            Reporter: Gilles
>            Assignee: Gilles
>            Priority: Trivial
>             Fix For: 3.1
>
>
> Since "Pair" is supposed to be an immutable class, couldn't we cache the 
> "hashCode" value at construction? That would supposedly make it more 
> efficient when used in maps.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to