public static LongIntHppcOpenHashMap createFrom(LongIterable keys, IntIterable values) { int keysSize = LongCollections.sizeOfIterable(keys, 0); int valuesSize = IntCollections.sizeOfIterable(values, 0); if (keysSize != valuesSize) { throw new IllegalArgumentException("keys.size() != values.size()"); } else { keysSize = Math.max(keysSize, valuesSize); } float loadFactor = LongIntOpenHashMap.DEFAULT_LOAD_FACTOR; int initialCapacity = (int)(keysSize / loadFactor) + 1; LongIntHppcOpenHashMap map = new LongIntHppcOpenHashMap(initialCapacity); LongIterator keysIt = keys.iterator(); IntIterator valuesIt = values.iterator(); map.putAll(LongIntIterators.pair(keysIt, valuesIt)); if (keysIt.hasNext() || valuesIt.hasNext()) { throw new IllegalArgumentException("keys.size() != values.size()"); } return map; }
@Override protected List<LongIntListMap> createMapsFromLists(LongList keys, IntList values) { IntArray indices = new IntArray(IntProgression.range(keys.size())); indices.shuffle(myRand); LongIntListMap createdMap = new LongIntListMap(); for (LongIntIterator it : LongIntIterators.pair(keys.get(indices), values.get(indices))) { createdMap.add(it.left(), it.right()); } final LongArray keys0 = new LongArray(keys); final IntArray values0 = new IntArray(values); IntegersUtils.quicksort(keys.size(), LongFunctions.comparator(keys0), new IntIntProcedure() { @Override public void invoke(int a, int b) { keys0.swap(a, b); values0.swap(a, b); } }); return Arrays.asList(new LongIntListMap(keys0, values0), createdMap); }
public void testPutAllRemoveAllSimple() { LongArray keys = new LongArray(LongProgression.arithmetic(1, 10, 2)); IntList values = getSqrValues(keys); map.putAll(keys, values); checkMap(map, keys, values); try { map.putAll(keys, values.subList(0, values.size() - 1)); fail(); } catch (IllegalArgumentException _) { // ok } checkMap(map, keys, values); keys.addAll(LongProgression.arithmetic(0, 10, 2)); values = getSqrValues(keys); map.putAll(keys.toNativeArray(), values.toNativeArray()); checkMap(map, keys, values); map.removeAll(keys); assertTrue(map.isEmpty()); keys = generateRandomLongArray(10, UNORDERED); values = getSqrValues(keys); map.putAll(LongIntIterators.pair(keys.iterator(), values.iterator())); checkMap(map, keys, values); }