/** * Returns a {@code Collector} that accumulates the input elements into a new {@code * ImmutableMultiset}. Elements iterate in order by the <i>first</i> appearance of that element in * encounter order. * * @since 21.0 */ @Beta public static <E> Collector<E, ?, ImmutableMultiset<E>> toImmutableMultiset() { return toImmutableMultiset(Function.identity(), e -> 1); }
/** * Returns a {@code Collector} that accumulates the input elements into a new {@code * ImmutableMultiset}. Elements iterate in order by the <i>first</i> appearance of that element in * encounter order. * * @since 21.0 */ @Beta public static <E> Collector<E, ?, ImmutableMultiset<E>> toImmutableMultiset() { return toImmutableMultiset(Function.identity(), e -> 1); }
public void sanityCheck() { Multiset<PlanFragmentId> exchangeIds = fragment.getRemoteSourceNodes().stream() .map(RemoteSourceNode::getSourceFragmentIds) .flatMap(List::stream) .collect(toImmutableMultiset()); Multiset<PlanFragmentId> childrenIds = children.stream() .map(SubPlan::getFragment) .map(PlanFragment::getId) .collect(toImmutableMultiset()); Preconditions.checkState(exchangeIds.equals(childrenIds), "Subplan exchange ids don't match child fragment ids (%s vs %s)", exchangeIds, childrenIds); for (SubPlan child : children) { child.sanityCheck(); } } }
public void testToImmutableMultiset() { BiPredicate<ImmutableMultiset<String>, ImmutableMultiset<String>> equivalence = (ms1, ms2) -> ms1.equals(ms2) && ms1.entrySet().asList().equals(ms2.entrySet().asList()); CollectorTester.of(ImmutableMultiset.<String>toImmutableMultiset(), equivalence) .expectCollects(ImmutableMultiset.of()) .expectCollects( ImmutableMultiset.of("a", "a", "b", "c", "c", "c"), "a", "a", "b", "c", "c", "c"); }
ImmutableMultiset.toImmutableMultiset(); BiPredicate<ImmutableMultiset<TypeWithDuplicates>, ImmutableMultiset<TypeWithDuplicates>> equivalence = c, b2); collector = ImmutableMultiset.toImmutableMultiset(e -> e, e -> 1); CollectorTester.of(collector, equivalence) .expectCollects(
public void testToImmutableMultisetCountFunction() { BiPredicate<ImmutableMultiset<String>, ImmutableMultiset<String>> equivalence = (ms1, ms2) -> ms1.equals(ms2) && ms1.entrySet().asList().equals(ms2.entrySet().asList()); CollectorTester.of( ImmutableMultiset.<Multiset.Entry<String>, String>toImmutableMultiset( Multiset.Entry::getElement, Multiset.Entry::getCount), equivalence) .expectCollects(ImmutableMultiset.of()) .expectCollects( ImmutableMultiset.of("a", "a", "b", "c", "c", "c"), Multisets.immutableEntry("a", 1), Multisets.immutableEntry("b", 1), Multisets.immutableEntry("a", 1), Multisets.immutableEntry("c", 3)); }
/** * Extracts names of files inside the APKs described by {@code apkDescs}. * * @return a bag, preserving the aggregate count each file was encountered across the given APKs */ private ImmutableMultiset<String> filesInApks( Collection<ApkDescription> apkDescs, ZipFile apkSetFile) { return apkDescs.stream() .flatMap(apkDesc -> filesInApk(apkDesc, apkSetFile).stream()) .collect(toImmutableMultiset()); }
/** * Returns a {@code Collector} that accumulates the input elements into a new {@code * ImmutableMultiset}. Elements iterate in order by the <i>first</i> appearance of that element in * encounter order. * * @since 21.0 */ @Beta public static <E> Collector<E, ?, ImmutableMultiset<E>> toImmutableMultiset() { return toImmutableMultiset(Function.identity(), e -> 1); }
/** * Returns a {@code Collector} that accumulates the input elements into a new {@code * ImmutableMultiset}. Elements iterate in order by the <i>first</i> appearance of that element in * encounter order. * * @since 21.0 */ @Beta public static <E> Collector<E, ?, ImmutableMultiset<E>> toImmutableMultiset() { return toImmutableMultiset(Function.identity(), e -> 1); }
/** * Given a filter and a set of rows, returns the subset of rows that match the filter * * @param filter The filter that should be matched * @param inputRows The input set of rows * @return A new set with matching rows */ @VisibleForTesting static Multiset<Row> filterRows(Filter filter, Multiset<Row> inputRows) { return inputRows.stream() .filter(filter::matches) .collect(ImmutableMultiset.toImmutableMultiset()); }
public void sanityCheck() { Multiset<PlanFragmentId> exchangeIds = fragment.getRemoteSourceNodes().stream() .map(RemoteSourceNode::getSourceFragmentIds) .flatMap(List::stream) .collect(toImmutableMultiset()); Multiset<PlanFragmentId> childrenIds = children.stream() .map(SubPlan::getFragment) .map(PlanFragment::getId) .collect(toImmutableMultiset()); Preconditions.checkState(exchangeIds.equals(childrenIds), "Subplan exchange ids don't match child fragment ids (%s vs %s)", exchangeIds, childrenIds); for (SubPlan child : children) { child.sanityCheck(); } } }
public void sanityCheck() { Multiset<PlanFragmentId> exchangeIds = fragment.getRemoteSourceNodes().stream() .map(RemoteSourceNode::getSourceFragmentIds) .flatMap(List::stream) .collect(toImmutableMultiset()); Multiset<PlanFragmentId> childrenIds = children.stream() .map(SubPlan::getFragment) .map(PlanFragment::getId) .collect(toImmutableMultiset()); Preconditions.checkState(exchangeIds.equals(childrenIds), "Subplan exchange ids don't match child fragment ids (%s vs %s)", exchangeIds, childrenIds); for (SubPlan child : children) { child.sanityCheck(); } } }
/** * Selects specified columns from the Multiset of rows that is provided as input. A new set is * created and returned, and the input is not modified. * * @param columns The columns to select * @param inputRows The input set. * @returns A new set of rows with specified columns */ @VisibleForTesting static Multiset<Row> selectColumns(Set<String> columns, Multiset<Row> inputRows) { return inputRows.stream() .map(row -> Row.builder().putAll(row, columns).build()) .collect(ImmutableMultiset.toImmutableMultiset()); } }
@Override public AnswerElement answer() { String tag = _batfish.getFlowTag(); Set<Flow> flows = _helper.getFlows(tag); TracerouteEngine tracerouteEngine = _batfish.getTracerouteEngine(); List<BidirectionalTrace> bidirectionalTraces = computeBidirectionalTraces(flows, tracerouteEngine, _ignoreFilters); ImmutableMultiset<Row> rows = prune(bidirectionalTraces, _maxTraces).stream() .map(BidirectionalTracerouteAnswerer::toRow) .collect(ImmutableMultiset.toImmutableMultiset()); TableAnswerElement table = new TableAnswerElement(metadata()); table.postProcessAnswer(_question, rows); return table; }
.collect(toImmutableMultiset());
public void testToImmutableMultiset() { BiPredicate<ImmutableMultiset<String>, ImmutableMultiset<String>> equivalence = (ms1, ms2) -> ms1.equals(ms2) && ms1.entrySet().asList().equals(ms2.entrySet().asList()); CollectorTester.of(ImmutableMultiset.<String>toImmutableMultiset(), equivalence) .expectCollects(ImmutableMultiset.of()) .expectCollects( ImmutableMultiset.of("a", "a", "b", "c", "c", "c"), "a", "a", "b", "c", "c", "c"); }
ImmutableMultiset.toImmutableMultiset(); BiPredicate<ImmutableMultiset<TypeWithDuplicates>, ImmutableMultiset<TypeWithDuplicates>> equivalence = c, b2); collector = ImmutableMultiset.toImmutableMultiset(e -> e, e -> 1); CollectorTester.of(collector, equivalence) .expectCollects(
public void testToImmutableMultisetCountFunction() { BiPredicate<ImmutableMultiset<String>, ImmutableMultiset<String>> equivalence = (ms1, ms2) -> ms1.equals(ms2) && ms1.entrySet().asList().equals(ms2.entrySet().asList()); CollectorTester.of( ImmutableMultiset.<Multiset.Entry<String>, String>toImmutableMultiset( Multiset.Entry::getElement, Multiset.Entry::getCount), equivalence) .expectCollects(ImmutableMultiset.of()) .expectCollects( ImmutableMultiset.of("a", "a", "b", "c", "c", "c"), Multisets.immutableEntry("a", 1), Multisets.immutableEntry("b", 1), Multisets.immutableEntry("a", 1), Multisets.immutableEntry("c", 3)); }