@Override public boolean applySV(double value) { return _matchingValues.contains(value); } }
@Override public void seal() { sealed = true; sortedDoubleList = new double[rawDoubleSet.size()]; rawDoubleSet.toArray(sortedDoubleList); Arrays.sort(sortedDoubleList); if (sortedDoubleList.length == 0) { min = null; max = null; return; } // Update the min-max values based on raw docs. min = sortedDoubleList[0]; max = sortedDoubleList[sortedDoubleList.length - 1]; // Merge the raw and aggregated docs, so stats for dictionary creation are collected correctly. int numAggregated = aggregatedDoubleSet.size(); if (numAggregated > 0) { rawDoubleSet.addAll(aggregatedDoubleSet); sortedDoubleList = new double[rawDoubleSet.size()]; rawDoubleSet.toArray(sortedDoubleList); Arrays.sort(sortedDoubleList); } } }
@Override public DoubleColumn unique() { final DoubleSet doubles = new DoubleOpenHashSet(); for (int i = 0; i < size(); i++) { if (!isMissing(i)) { doubles.add(getDouble(i)); } } final DoubleColumn column = DoubleColumn.create(name() + " Unique values"); doubles.forEach((DoubleConsumer) column::append); return column; }
DoubleRawValueBasedNotInPredicateEvaluator(NotInPredicate notInPredicate) { String[] values = notInPredicate.getValues(); _nonMatchingValues = new DoubleOpenHashSet(HashUtil.getMinHashSetSize(values.length)); for (String value : values) { _nonMatchingValues.add(Double.parseDouble(value)); } }
/** * Removes an element from this set. * * <p> * This method is inherited from the type-specific collection this type-specific * set is based on, but it should not used as this interface reinstates * {@code remove()} as removal method. * * @deprecated Please use {@code remove()} instead. */ @Deprecated @Override default boolean rem(double k) { return remove(k); } }
@Nullable public static <T> T getWeightedRandomReversed(Random random, Double2ObjectMap<T> choices) { double i = 0; DoubleSet doubles = choices.keySet(); for (DoubleIterator iterator = doubles.iterator(); iterator.hasNext(); ) { double x = iterator.nextDouble(); i += x; } i = getRandomDouble(random, 0, i); for (Double2ObjectMap.Entry<T> entry : choices.double2ObjectEntrySet()) { i -= entry.getDoubleKey(); if (i < 0) { return entry.getValue(); } } return null; }
@Override public DoubleColumn unique() { final DoubleSet doubles = new DoubleOpenHashSet(); for (int i = 0; i < size(); i++) { if (!isMissing(i)) { doubles.add(getDouble(i)); } } final DoubleColumn column = DoubleColumn.create(name() + " Unique values"); doubles.forEach((DoubleConsumer) column::append); return column; }
DoubleRawValueBasedInPredicateEvaluator(InPredicate inPredicate) { String[] values = inPredicate.getValues(); _matchingValues = new DoubleOpenHashSet(HashUtil.getMinHashSetSize(values.length)); for (String value : values) { _matchingValues.add(Double.parseDouble(value)); } }
/** * Collect statistics for the given entry. * - Add it to the passed in set (which could be raw or aggregated) * - Update maximum number of values for Multi-valued entries * - Update Total number of entries * - Check if entry is sorted. * @param entry * @param set */ private void collectEntry(Object entry, DoubleSet set) { if (entry instanceof Object[]) { for (final Object e : (Object[]) entry) { set.add(((Number) e).doubleValue()); } if (maxNumberOfMultiValues < ((Object[]) entry).length) { maxNumberOfMultiValues = ((Object[]) entry).length; } updateTotalNumberOfEntries((Object[]) entry); } else { double value = ((Number) entry).doubleValue(); addressSorted(value); updatePartition(value); set.add(value); totalNumberOfEntries++; } }
@Override public boolean applySV(double value) { return !_nonMatchingValues.contains(value); } }
@Override public double[][] transformToDoubleValuesMV(@Nonnull ProjectionBlock projectionBlock) { if (getResultMetadata().getDataType() != FieldSpec.DataType.DOUBLE) { return super.transformToDoubleValuesMV(projectionBlock); } if (_doubleValueSet == null) { _doubleValueSet = new DoubleOpenHashSet(); for (String inValue : _stringValueSet) { _doubleValueSet.add(Double.parseDouble(inValue)); } _doubleValues = new double[DocIdSetPlanNode.MAX_DOC_PER_CALL][]; } double[][] unFilteredDoubleValues = _mainTransformFunction.transformToDoubleValuesMV(projectionBlock); int length = projectionBlock.getNumDocs(); for (int i = 0; i < length; i++) { _doubleValues[i] = filterDoubles(_doubleValueSet, unFilteredDoubleValues[i]); } return _doubleValues; }
private static double[] filterDoubles(DoubleSet doubleSet, double[] source) { DoubleList doubleList = new DoubleArrayList(); for (double value : source) { if (doubleSet.contains(value)) { doubleList.add(value); } } if (doubleList.size() == source.length) { return source; } else { return doubleList.toDoubleArray(); } }