-
assigned issue to
Wrong behavior of Hashing classes when adding no_entry_value
Wrong behavior of hashing classes when a value occupies the place of no_entry_value.
For instance, using TIntHashSet with the default values (no_entry_value = 0), and assuming that default size allows to store 23 elements ([0-22]): - When 23 is added, it occupies the place with index 0. - Then, other elements are added with 0 among them. - After this the set always return 'true' when contains(0) is called even after it is removed. - The remove(0) method decreases 1 the size even when 0 is not in the set.
Code example:
// Instantiate and fill
TIntHashSet nodes = new TIntHashSet();
nodes.add(23);
nodes.add(0);
nodes.add(1);
nodes.add(2);
// Test
System.out.println("Size: " + nodes.size() + " Contains '0': " + nodes.contains(0)); // Size: 4 Contains '0': true
System.out.println("Size: " + nodes.size() + " Contains '2': " + nodes.contains(2)); // Size: 4 Contains '2': true
nodes.remove(0);
System.out.println("Size: " + nodes.size() + " Contains '0': " + nodes.contains(0)); // Size: 3 Contains '0': true
nodes.remove(2);
System.out.println("Size: " + nodes.size() + " Contains '2': " + nodes.contains(2)); // Size: 2 Contains '2': false
nodes.remove(0);
System.out.println("Size: " + nodes.size() + " Contains 0: " + nodes.contains(0)); // Size: 1 Contains 0: true
Comments (3)
-
-
I cannot repeat this. The output that I see when I run this against HEAD is:
Size: 4 Contains '0': true Size: 4 Contains '2': true Size: 3 Contains '0': false Size: 2 Contains '2': false Size: 2 Contains 0: false
If there is a specific version of Trove that you see this error with, please specify this in the bug report, preferably in the Version field.
I'm closing this, as I cannot repeat it.
-
- changed status to closed
Cannot repeat against HEAD, and I don't have any other version specified.
- Log in to comment