always hash input for hashed collection functions

This commit is contained in:
Jonathan Shook
2020-07-17 18:40:51 -05:00
parent 8874d3dcca
commit b35426c390
4 changed files with 4 additions and 4 deletions

View File

@@ -45,9 +45,9 @@ public class ListHashed implements LongFunction<List<Object>> {
long hash = value; long hash = value;
List<Object> list = new ArrayList<>(size); List<Object> list = new ArrayList<>(size);
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
hash = hasher.applyAsLong(hash);
int selector = Math.min(i, valueFuncs.size() - 1); int selector = Math.min(i, valueFuncs.size() - 1);
LongFunction<?> func = valueFuncs.get(selector); LongFunction<?> func = valueFuncs.get(selector);
hash = hasher.applyAsLong(hash);
list.add(func.apply(hash)); list.add(func.apply(hash));
} }
return list; return list;

View File

@@ -48,9 +48,9 @@ public class MapHashed implements LongFunction<java.util.Map<Object,Object>> {
java.util.Map<Object,Object> map = new HashMap<>(size); java.util.Map<Object,Object> map = new HashMap<>(size);
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
hash = hasher.applyAsLong(hash);
int keySelector = Math.min(i, keyFuncs.size() - 1); int keySelector = Math.min(i, keyFuncs.size() - 1);
int valSelector = Math.min(i, valueFuncs.size() -1); int valSelector = Math.min(i, valueFuncs.size() -1);
hash = hasher.applyAsLong(hash);
Object keyObject = keyFuncs.get(keySelector).apply(hash); Object keyObject = keyFuncs.get(keySelector).apply(hash);
Object valueObject = valueFuncs.get(valSelector).apply(hash); Object valueObject = valueFuncs.get(valSelector).apply(hash);

View File

@@ -54,9 +54,9 @@ public class MapSizedHashed implements LongFunction<java.util.Map<Object,Object>
java.util.Map<Object,Object> map = new HashMap<>(size); java.util.Map<Object,Object> map = new HashMap<>(size);
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
hash = hasher.applyAsLong(hash);
int keySelector = Math.min(i, keyFuncs.size() - 1); int keySelector = Math.min(i, keyFuncs.size() - 1);
int valSelector = Math.min(i, valueFuncs.size() -1); int valSelector = Math.min(i, valueFuncs.size() -1);
hash = hasher.applyAsLong(hash);
Object keyObject = keyFuncs.get(keySelector).apply(hash); Object keyObject = keyFuncs.get(keySelector).apply(hash);
Object valueObject = valueFuncs.get(valSelector).apply(hash); Object valueObject = valueFuncs.get(valSelector).apply(hash);

View File

@@ -42,9 +42,9 @@ public class SetHashed implements LongFunction<java.util.Set<Object>> {
long hash = value; long hash = value;
java.util.Set<Object> list = new HashSet<>(size); java.util.Set<Object> list = new HashSet<>(size);
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
hash = hasher.applyAsLong(hash);
int selector = Math.min(i, valueFuncs.size() - 1); int selector = Math.min(i, valueFuncs.size() - 1);
LongFunction<?> func = valueFuncs.get(selector); LongFunction<?> func = valueFuncs.get(selector);
hash = hasher.applyAsLong(hash);
list.add(func.apply(hash)); list.add(func.apply(hash));
} }
return list; return list;