/** * Fills all pairs satisfying a given condition into the specified lists. Fills into the lists, * starting at index 0. After this call returns the specified lists both have a new size, the * number of pairs satisfying the condition. Iteration order is guaranteed to be <i>identical</i> * to the order used by method {@link #forEachKey(LongProcedure)}. * * <p><b>Example:</b> <br> * * <pre> * LongFloatProcedure condition = new LongFloatProcedure() { // match even values only * public boolean apply(long key, float value) { return value%2==0; } * } * keys = (8,7,6), values = (1,2,2) --> keyList = (6,8), valueList = (2,1)</tt> * </pre> * * @param condition the condition to be matched. Takes the current key as first and the current * value as second argument. * @param keyList the list to be filled with keys, can have any size. * @param valueList the list to be filled with values, can have any size. */ @Override public void pairsMatching( LongFloatProcedure condition, LongArrayList keyList, FloatArrayList valueList) { keyList.clear(); valueList.clear(); for (int i = table.length; i-- > 0; ) { if (state[i] == FULL && condition.apply(table[i], values[i])) { keyList.add(table[i]); valueList.add(values[i]); } } }
/** * Inserts the specified element before the specified position into the receiver. Shifts the * element currently at that position (if any) and any subsequent elements to the right. * * @param index index before which the specified element is to be inserted (must be in [0,size]). * @param element element to be inserted. * @throws IndexOutOfBoundsException index is out of range (<tt>index < 0 || index > * size()</tt>). */ public void beforeInsert(int index, float element) { // overridden for performance only. if (size == index) { add(element); return; } if (index > size || index < 0) { throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); } ensureCapacity(size + 1); System.arraycopy(elements, index, elements, index + 1, size - index); elements[index] = element; size++; }