-
Bug
-
Resolution: Not an Issue
-
P3
-
None
-
6-pool, 7-pool, 8-pool
-
x86
-
windows_7
FULL PRODUCT VERSION :
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)
A DESCRIPTION OF THE PROBLEM :
Code:
Map<String, String> hm = new HashMap<String, String>();
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
for(int i=0; i<10; i++)
{
Long in = new Long(i);
hm.put(String.valueOf(in), String.valueOf(in));
}
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
for(int i=10; i<20; i++)
{
Long in = new Long(i);
hm.put(String.valueOf(in), String.valueOf(in));
}
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
Output:
hashCode() -> 0
Map -> {}
hashCode() -> 0
Map -> {3=3, 2=2, 1=1, 0=0, 7=7, 6=6, 5=5, 4=4, 9=9, 8=8}
hashCode() -> 0
Map -> {19=19, 17=17, 18=18, 15=15, 16=16, 13=13, 14=14, 11=11, 12=12, 3=3, 2=2, 1=1, 10=10, 0=0, 7=7, 6=6, 5=5, 4=4, 9=9, 8=8}
REGRESSION. Last worked in version 6u31
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
HashMap.hashCode() should return different int values when the contents of the HashMap changes.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
Map<String, String> hm = new HashMap<String, String>();
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
for(int i=0; i<10; i++)
{
Long in = new Long(i);
hm.put(String.valueOf(in), String.valueOf(in));
}
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
for(int i=10; i<20; i++)
{
Long in = new Long(i);
hm.put(String.valueOf(in), String.valueOf(in));
}
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
---------- END SOURCE ----------
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)
A DESCRIPTION OF THE PROBLEM :
Code:
Map<String, String> hm = new HashMap<String, String>();
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
for(int i=0; i<10; i++)
{
Long in = new Long(i);
hm.put(String.valueOf(in), String.valueOf(in));
}
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
for(int i=10; i<20; i++)
{
Long in = new Long(i);
hm.put(String.valueOf(in), String.valueOf(in));
}
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
Output:
hashCode() -> 0
Map -> {}
hashCode() -> 0
Map -> {3=3, 2=2, 1=1, 0=0, 7=7, 6=6, 5=5, 4=4, 9=9, 8=8}
hashCode() -> 0
Map -> {19=19, 17=17, 18=18, 15=15, 16=16, 13=13, 14=14, 11=11, 12=12, 3=3, 2=2, 1=1, 10=10, 0=0, 7=7, 6=6, 5=5, 4=4, 9=9, 8=8}
REGRESSION. Last worked in version 6u31
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
HashMap.hashCode() should return different int values when the contents of the HashMap changes.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
Map<String, String> hm = new HashMap<String, String>();
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
for(int i=0; i<10; i++)
{
Long in = new Long(i);
hm.put(String.valueOf(in), String.valueOf(in));
}
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
for(int i=10; i<20; i++)
{
Long in = new Long(i);
hm.put(String.valueOf(in), String.valueOf(in));
}
System.out.println("hashCode() -> " + hm.hashCode());
System.out.println("Map -> " + hm);
---------- END SOURCE ----------