public static IntLongHppcOpenHashMap createFrom(IntIterable keys, LongIterable values) { int keysSize = IntCollections.sizeOfIterable(keys, 0); int valuesSize = LongCollections.sizeOfIterable(values, 0); if (keysSize != valuesSize) { throw new IllegalArgumentException("keys.size() != values.size()"); } else { keysSize = Math.max(keysSize, valuesSize); } float loadFactor = IntLongOpenHashMap.DEFAULT_LOAD_FACTOR; int initialCapacity = (int)(keysSize / loadFactor) + 1; IntLongHppcOpenHashMap map = new IntLongHppcOpenHashMap(initialCapacity); IntIterator keysIt = keys.iterator(); LongIterator valuesIt = values.iterator(); map.putAll(IntLongIterators.pair(keysIt, valuesIt)); if (keysIt.hasNext() || valuesIt.hasNext()) { throw new IllegalArgumentException("keys.size() != values.size()"); } return map; }
public void setUp() throws Exception { super.setUp(); IntIterator arr1 = IntArray.create(1, 2, 3, 4, 5).iterator(); LongIterator arr2 = LongArray.create(5, 10, 15, 20, 25).iterator(); res = IntLongIterators.pair(arr1, arr2); }
public void testValueComplexCase() { IntArray keys = new IntArray(IntProgression.arithmetic(0, 1000, 1)); LongArray values0 = new LongArray(LongProgression.arithmetic(0, 1000, 1)); LongArray values = new LongArray(values0.toNativeArray()); values.apply(0, 1000, new LongToLong() { @Override public long invoke(long a) { return a * a - a; } }); res = IntLongIterators.pair(keys.iterator(), values.iterator()); for (int i = 0; i < 1000; i++) { res.next(); int v1 = res.left(); long v2 = res.right(); assertEquals(i, v1); assertEquals(i * i - i, v2); } } }