ByteBuffer.java (hashCode): Implemented.
2004-09-21 Sven de Marothy <sven@physto.se> * java/nio/ByteBuffer.java (hashCode): Implemented. * java/nio/CharBuffer.java: Likewise. * java/nio/DoubleBuffer.java: Likewise. * java/nio/FloatBuffer.java: Likewise. * java/nio/LongBuffer.java: Likewise. * java/nio/IntBuffer.java: Likewise. * java/nio/ShortBuffer.java: Likewise. From-SVN: r87804
This commit is contained in:
parent
c6847e25b9
commit
9413382eec
8 changed files with 134 additions and 14 deletions
|
@ -1,3 +1,13 @@
|
||||||
|
2004-09-21 Sven de Marothy <sven@physto.se>
|
||||||
|
|
||||||
|
* java/nio/ByteBuffer.java (hashCode): Implemented.
|
||||||
|
* java/nio/CharBuffer.java: Likewise.
|
||||||
|
* java/nio/DoubleBuffer.java: Likewise.
|
||||||
|
* java/nio/FloatBuffer.java: Likewise.
|
||||||
|
* java/nio/LongBuffer.java: Likewise.
|
||||||
|
* java/nio/IntBuffer.java: Likewise.
|
||||||
|
* java/nio/ShortBuffer.java: Likewise.
|
||||||
|
|
||||||
2004-09-21 Andreas Tobler <a.tobler@schweiz.ch>
|
2004-09-21 Andreas Tobler <a.tobler@schweiz.ch>
|
||||||
|
|
||||||
* javax/security/auth/x500/X500Principal.java: Fix some merge glitches.
|
* javax/security/auth/x500/X500Principal.java: Fix some merge glitches.
|
||||||
|
|
|
@ -260,11 +260,27 @@ public abstract class ByteBuffer extends Buffer
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates a hash code for this buffer.
|
* Calculates a hash code for this buffer.
|
||||||
|
*
|
||||||
|
* This is done with <code>int</code> arithmetic,
|
||||||
|
* where ** represents exponentiation, by this formula:<br>
|
||||||
|
* <code>s[position()] + 31 + (s[position()+1] + 30)*31**1 + ... +
|
||||||
|
* (s[limit()-1]+30)*31**(limit()-1)</code>.
|
||||||
|
* Where s is the buffer data. Note that the hashcode is dependent
|
||||||
|
* on buffer content, and therefore is not useful if the buffer
|
||||||
|
* content may change.
|
||||||
|
*
|
||||||
|
* @return the hash code
|
||||||
*/
|
*/
|
||||||
public int hashCode ()
|
public int hashCode ()
|
||||||
{
|
{
|
||||||
// FIXME: Check what SUN calculates here.
|
int hashCode = get(position()) + 31;
|
||||||
return super.hashCode ();
|
int multiplier = 1;
|
||||||
|
for (int i = position() + 1; i < limit(); ++i)
|
||||||
|
{
|
||||||
|
multiplier *= 31;
|
||||||
|
hashCode += (get(i) + 30)*multiplier;
|
||||||
|
}
|
||||||
|
return hashCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -297,11 +297,25 @@ public abstract class CharBuffer extends Buffer
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates a hash code for this buffer.
|
* Calculates a hash code for this buffer.
|
||||||
|
*
|
||||||
|
* This is done with int arithmetic,
|
||||||
|
* where ** represents exponentiation, by this formula:<br>
|
||||||
|
* <code>s[position()] + 31 + (s[position()+1] + 30)*31**1 + ... +
|
||||||
|
* (s[limit()-1]+30)*31**(limit()-1)</code>.
|
||||||
|
* Where s is the buffer data. Note that the hashcode is dependent
|
||||||
|
* on buffer content, and therefore is not useful if the buffer
|
||||||
|
* content may change.
|
||||||
*/
|
*/
|
||||||
public int hashCode ()
|
public int hashCode ()
|
||||||
{
|
{
|
||||||
// FIXME: Check what SUN calculates here.
|
int hashCode = get(position()) + 31;
|
||||||
return super.hashCode ();
|
int multiplier = 1;
|
||||||
|
for (int i = position() + 1; i < limit(); ++i)
|
||||||
|
{
|
||||||
|
multiplier *= 31;
|
||||||
|
hashCode += (get(i) + 30)*multiplier;
|
||||||
|
}
|
||||||
|
return hashCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -243,11 +243,27 @@ public abstract class DoubleBuffer extends Buffer
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates a hash code for this buffer.
|
* Calculates a hash code for this buffer.
|
||||||
|
*
|
||||||
|
* This is done with <code>long</code> arithmetic,
|
||||||
|
* where ** represents exponentiation, by this formula:<br>
|
||||||
|
* <code>s[position()] + 31 + (s[position()+1] + 30)*31**1 + ... +
|
||||||
|
* (s[limit()-1]+30)*31**(limit()-1)</code>.
|
||||||
|
* Where s is the buffer data, in Double.doubleToLongBits() form
|
||||||
|
* Note that the hashcode is dependent on buffer content,
|
||||||
|
* and therefore is not useful if the buffer content may change.
|
||||||
|
*
|
||||||
|
* @return the hash code (casted to int)
|
||||||
*/
|
*/
|
||||||
public int hashCode ()
|
public int hashCode ()
|
||||||
{
|
{
|
||||||
// FIXME: Check what SUN calculates here.
|
long hashCode = Double.doubleToLongBits(get(position())) + 31;
|
||||||
return super.hashCode ();
|
long multiplier = 1;
|
||||||
|
for (int i = position() + 1; i < limit(); ++i)
|
||||||
|
{
|
||||||
|
multiplier *= 31;
|
||||||
|
hashCode += (Double.doubleToLongBits(get(i)) + 30)*multiplier;
|
||||||
|
}
|
||||||
|
return ((int)hashCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -243,11 +243,27 @@ public abstract class FloatBuffer extends Buffer
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates a hash code for this buffer.
|
* Calculates a hash code for this buffer.
|
||||||
|
*
|
||||||
|
* This is done with <code>int</code> arithmetic,
|
||||||
|
* where ** represents exponentiation, by this formula:<br>
|
||||||
|
* <code>s[position()] + 31 + (s[position()+1] + 30)*31**1 + ... +
|
||||||
|
* (s[limit()-1]+30)*31**(limit()-1)</code>.
|
||||||
|
* Where s is the buffer data, in Float.floatToIntBits() form
|
||||||
|
* Note that the hashcode is dependent on buffer content,
|
||||||
|
* and therefore is not useful if the buffer content may change.
|
||||||
|
*
|
||||||
|
* @return the hash code
|
||||||
*/
|
*/
|
||||||
public int hashCode ()
|
public int hashCode ()
|
||||||
{
|
{
|
||||||
// FIXME: Check what SUN calculates here.
|
int hashCode = Float.floatToIntBits(get(position())) + 31;
|
||||||
return super.hashCode ();
|
int multiplier = 1;
|
||||||
|
for (int i = position() + 1; i < limit(); ++i)
|
||||||
|
{
|
||||||
|
multiplier *= 31;
|
||||||
|
hashCode += (Float.floatToIntBits(get(i)) + 30)*multiplier;
|
||||||
|
}
|
||||||
|
return hashCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -243,11 +243,27 @@ public abstract class IntBuffer extends Buffer
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates a hash code for this buffer.
|
* Calculates a hash code for this buffer.
|
||||||
|
*
|
||||||
|
* This is done with <code>int</code> arithmetic,
|
||||||
|
* where ** represents exponentiation, by this formula:<br>
|
||||||
|
* <code>s[position()] + 31 + (s[position()+1] + 30)*31**1 + ... +
|
||||||
|
* (s[limit()-1]+30)*31**(limit()-1)</code>.
|
||||||
|
* Where s is the buffer data. Note that the hashcode is dependent
|
||||||
|
* on buffer content, and therefore is not useful if the buffer
|
||||||
|
* content may change.
|
||||||
|
*
|
||||||
|
* @return the hash code
|
||||||
*/
|
*/
|
||||||
public int hashCode ()
|
public int hashCode ()
|
||||||
{
|
{
|
||||||
// FIXME: Check what SUN calculates here.
|
int hashCode = get(position()) + 31;
|
||||||
return super.hashCode ();
|
int multiplier = 1;
|
||||||
|
for (int i = position() + 1; i < limit(); ++i)
|
||||||
|
{
|
||||||
|
multiplier *= 31;
|
||||||
|
hashCode += (get(i) + 30)*multiplier;
|
||||||
|
}
|
||||||
|
return hashCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -243,11 +243,27 @@ public abstract class LongBuffer extends Buffer
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates a hash code for this buffer.
|
* Calculates a hash code for this buffer.
|
||||||
|
*
|
||||||
|
* This is done with <code>long</code> arithmetic,
|
||||||
|
* where ** represents exponentiation, by this formula:<br>
|
||||||
|
* <code>s[position()] + 31 + (s[position()+1] + 30)*31**1 + ... +
|
||||||
|
* (s[limit()-1]+30)*31**(limit()-1)</code>.
|
||||||
|
* Where s is the buffer data. Note that the hashcode is dependent
|
||||||
|
* on buffer content, and therefore is not useful if the buffer
|
||||||
|
* content may change.
|
||||||
|
*
|
||||||
|
* @return the hash code (casted to int)
|
||||||
*/
|
*/
|
||||||
public int hashCode ()
|
public int hashCode ()
|
||||||
{
|
{
|
||||||
// FIXME: Check what SUN calculates here.
|
long hashCode = get(position()) + 31;
|
||||||
return super.hashCode ();
|
long multiplier = 1;
|
||||||
|
for (int i = position() + 1; i < limit(); ++i)
|
||||||
|
{
|
||||||
|
multiplier *= 31;
|
||||||
|
hashCode += (get(i) + 30)*multiplier;
|
||||||
|
}
|
||||||
|
return ((int)hashCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -243,11 +243,27 @@ public abstract class ShortBuffer extends Buffer
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates a hash code for this buffer.
|
* Calculates a hash code for this buffer.
|
||||||
|
*
|
||||||
|
* This is done with <code>int</code> arithmetic,
|
||||||
|
* where ** represents exponentiation, by this formula:<br>
|
||||||
|
* <code>s[position()] + 31 + (s[position()+1] + 30)*31**1 + ... +
|
||||||
|
* (s[limit()-1]+30)*31**(limit()-1)</code>.
|
||||||
|
* Where s is the buffer data. Note that the hashcode is dependent
|
||||||
|
* on buffer content, and therefore is not useful if the buffer
|
||||||
|
* content may change.
|
||||||
|
*
|
||||||
|
* @return the hash code
|
||||||
*/
|
*/
|
||||||
public int hashCode ()
|
public int hashCode ()
|
||||||
{
|
{
|
||||||
// FIXME: Check what SUN calculates here.
|
int hashCode = get(position()) + 31;
|
||||||
return super.hashCode ();
|
int multiplier = 1;
|
||||||
|
for (int i = position() + 1; i < limit(); ++i)
|
||||||
|
{
|
||||||
|
multiplier *= 31;
|
||||||
|
hashCode += (get(i) + 30)*multiplier;
|
||||||
|
}
|
||||||
|
return hashCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue