Need reviewer for forward port of 6815768 (File.getXXXSpace) and 6815768 (String.hashCode)
Ulf Zibis
Ulf.Zibis at gmx.de
Sat Feb 27 18:31:00 UTC 2010
Am 26.02.2010 16:27, schrieb Dmitry Nadezhin:
>
>
> On Fri, Feb 26, 2010 at 6:19 PM, Ulf Zibis <Ulf.Zibis at gmx.de
> <mailto:Ulf.Zibis at gmx.de>> wrote:
>
> Am 26.02.2010 12:52, schrieb Dmitry Nadezhin:
>
> I found two alternatives in the link
> http://mail.openjdk.java.net/pipermail/coin-dev/2009-December/002618.html
> The first alternative
> int equalByHashThreshold = 2;
>
> public boolean equals(Object anObject) {
> if (this == anObject) {
> return true;
> }
> if (anObject instanceof String) {
>
> String anotherString = (String)anObject;
> int n = count;
> if (n == anotherString.count&&
> (equalByHashThreshold == 0 || --equalByHashThreshold
> == 0)&&
> (anotherString.equalByHashThreshold == 0 ||
> --anotherString.equalByHashThreshold == 0)&&
>
>
> hash() == anotherString.hash()) {
> [snipped]
> }
> }
> return false;
> }
>
> will say that
> "A".equals("A") == false
> because body of if statement will not be executed
>
>
> I don't understand your problem.
> 1. String literals are always interned, so "A" is always identical
> to "A". Therefore the body of the 1st if will return true.
> 2. If the strings are not identical, body of 2nd if will be
> executed, if anObject is instance of String.
>
>
> I'm sorry. The example should be
> new String("A").equals("A") == false .
> In this case Strings are not identical. The first if wil not return.
> The second if will be executed.
> The third if will not be executed because
> (equalByHashThreshold == 0 || --equalByHashThreshhold == 0) <=> (2 ==
> 0 || 1 == 0) <=> false .
>
Thanks for your patience.
As I think, adding a new member variable to String is a bad idea, even
if it's transient, I didn't try to fix your claim.
But I've added a new equals4() method, which too follows the idea of
incrementing a counter against a threshold, double-using the hash value,
but without possibility to adjust the threshold against the string's length.
See new revision:
https://java-nio-charset-enhanced.dev.java.net/source/browse/java-nio-charset-enhanced/branches/j7_EUC_TW/src/java/lang/String.java?rev=959&view=markup
-Ulf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/core-libs-dev/attachments/20100227/38bc8fa6/attachment.html>
More information about the core-libs-dev
mailing list