/** */ @Override public Table countByCategory(String columnName) { Table t = Table.create("Column: " + columnName); StringColumn categories = StringColumn.create("Category"); IntColumn counts = IntColumn.create("Count"); Short2IntMap valueToCount = new Short2IntOpenHashMap(); for (short next : values) { if (valueToCount.containsKey(next)) { valueToCount.put(next, valueToCount.get(next) + 1); } else { valueToCount.put(next, 1); } } for (Map.Entry<Short, Integer> entry : valueToCount.short2IntEntrySet()) { categories.append(getValueForKey(entry.getKey())); counts.append(entry.getValue()); } if (countMissing() > 0) { categories.append("* missing values"); counts.append(countMissing()); } t.addColumns(categories); t.addColumns(counts); return t; }
/** {@inheritDoc} */ @Override public int merge(final short k, final int v, final java.util.function.BiFunction<? super Integer, ? super Integer, ? extends Integer> remappingFunction) { java.util.Objects.requireNonNull(remappingFunction); final int pos = find(k); if (pos < 0) { insert(-pos - 1, k, v); return v; } final Integer newValue = remappingFunction.apply(Integer.valueOf(value[pos]), Integer.valueOf(v)); if (newValue == null) { if (((k) == ((short) 0))) removeNullEntry(); else removeEntry(pos); return defRetValue; } return value[pos] = (newValue).intValue(); } /*
@Override public void putAll(Map<? extends Short, ? extends Integer> m) { if (f <= .5) ensureCapacity(m.size()); // The resulting map will be sized for m.size() elements else tryCapacity(size() + m.size()); // The resulting map will be tentatively sized for size() + m.size() // elements super.putAll(m); }
/** {@inheritDoc} */ @Override public int computeIfPresent(final short k, final java.util.function.BiFunction<? super Short, ? super Integer, ? extends Integer> remappingFunction) { java.util.Objects.requireNonNull(remappingFunction); final int pos = find(k); if (pos < 0) return defRetValue; final Integer newValue = remappingFunction.apply(Short.valueOf(k), Integer.valueOf(value[pos])); if (newValue == null) { if (((k) == ((short) 0))) removeNullEntry(); else removeEntry(pos); return defRetValue; } return value[pos] = (newValue).intValue(); } /** {@inheritDoc} */
if (((k) == ((short) 0))) { if (containsNullKey) return addToValue(n, incr); pos = n; containsNullKey = true; return addToValue(pos, incr); while (!((curr = key[pos = (pos + 1) & mask]) == ((short) 0))) if (((curr) == (k))) return addToValue(pos, incr); value[pos] = defRetValue + incr; if (size++ >= maxFill) rehash(arraySize(size + 1, f)); if (ASSERTS) checkTable();
@Override public void clear() { Short2IntOpenHashMap.this.clear(); } /** {@inheritDoc} */
/** {@inheritDoc} */ @Override public boolean replace(final short k, final int oldValue, final int v) { final int pos = find(k); if (pos < 0 || !((oldValue) == (value[pos]))) return false; value[pos] = v; return true; } /** {@inheritDoc} */
/** * Creates a new hash map copying a given one. * * @param m * a {@link Map} to be copied into the new hash map. * @param f * the load factor. */ public Short2IntOpenHashMap(final Map<? extends Short, ? extends Integer> m, final float f) { this(m.size(), f); putAll(m); } /**
@Override public boolean contains(int v) { return containsValue(v); } @Override
@Override public boolean contains(short k) { return containsKey(k); } @Override
/** * Creates a new hash map using the elements of two parallel arrays. * * @param k * the array of keys of the new hash map. * @param v * the array of corresponding values in the new hash map. * @param f * the load factor. * @throws IllegalArgumentException * if {@code k} and {@code v} have different lengths. */ public Short2IntOpenHashMap(final short[] k, final int[] v, final float f) { this(k.length, f); if (k.length != v.length) throw new IllegalArgumentException( "The key array and the value array have different lengths (" + k.length + " and " + v.length + ")"); for (int i = 0; i < k.length; i++) this.put(k[i], v[i]); } /**
/** {@inheritDoc} */ @Override public int compute(final short k, final java.util.function.BiFunction<? super Short, ? super Integer, ? extends Integer> remappingFunction) { java.util.Objects.requireNonNull(remappingFunction); final int pos = find(k); final Integer newValue = remappingFunction.apply(Short.valueOf(k), pos >= 0 ? Integer.valueOf(value[pos]) : null); if (newValue == null) { if (pos >= 0) { if (((k) == ((short) 0))) removeNullEntry(); else removeEntry(pos); } return defRetValue; } int newVal = (newValue).intValue(); if (pos < 0) { insert(-pos - 1, k, newVal); return newVal; } return value[pos] = newVal; } /** {@inheritDoc} */
@Override public void clear() { Short2IntOpenHashMap.this.clear(); } }
/** {@inheritDoc} */ @Override public int replace(final short k, final int v) { final int pos = find(k); if (pos < 0) return defRetValue; final int oldValue = value[pos]; value[pos] = v; return oldValue; } /** {@inheritDoc} */
/** * Creates a new hash map copying a given type-specific one. * * @param m * a type-specific map to be copied into the new hash map. * @param f * the load factor. */ public Short2IntOpenHashMap(final Short2IntMap m, final float f) { this(m.size(), f); putAll(m); } /**
/** {@inheritDoc} */ @Override public int computeIfAbsent(final short k, final java.util.function.IntUnaryOperator mappingFunction) { java.util.Objects.requireNonNull(mappingFunction); final int pos = find(k); if (pos >= 0) return value[pos]; final int newValue = mappingFunction.applyAsInt(k); insert(-pos - 1, k, newValue); return newValue; } /** {@inheritDoc} */
@Override public void clear() { Short2IntOpenHashMap.this.clear(); } /** {@inheritDoc} */
/** */ @Override public Table countByCategory(String columnName) { Table t = Table.create("Column: " + columnName); StringColumn categories = StringColumn.create("Category"); IntColumn counts = IntColumn.create("Count"); Short2IntMap valueToCount = new Short2IntOpenHashMap(); for (short next : values) { if (valueToCount.containsKey(next)) { valueToCount.put(next, valueToCount.get(next) + 1); } else { valueToCount.put(next, 1); } } for (Map.Entry<Short, Integer> entry : valueToCount.short2IntEntrySet()) { categories.append(getValueForKey(entry.getKey())); counts.append(entry.getValue()); } if (countMissing() > 0) { categories.append("* missing values"); counts.append(countMissing()); } t.addColumns(categories); t.addColumns(counts); return t; }