@Override public void forEach(BiConsumer<? super K, ? super V> action) { checkNotNull(action); asMap() .forEach( (key, valueCollection) -> valueCollection.forEach(value -> action.accept(key, value))); }
@Override protected Map<String, Collection<Integer>> makeEmptyMap() { return ImmutableMultimap.<String, Integer>of().asMap(); }
@Override public Map<String, Collection<String>> getHeaders() { ImmutableMultimap.Builder<String, String> builder = ImmutableMultimap.builder(); for ( String name : fromEnumeration( req.getHeaderNames() ) ) { builder.putAll( name, fromEnumeration( req.getHeaders( name ) ) ); } return builder.build().asMap(); }
@Override public Map<String, Collection<String>> getParameters() { ImmutableMultimap.Builder<String, String> builder = ImmutableMultimap.builder(); for ( String name : fromEnumeration( req.getParameterNames() ) ) { builder.putAll( name, req.getParameterValues( name ) ); } return builder.build().asMap(); }
@Override public void forEach(BiConsumer<? super K, ? super V> action) { checkNotNull(action); asMap() .forEach( (key, valueCollection) -> valueCollection.forEach(value -> action.accept(key, value))); }
@Override Spliterator<Entry<K, V>> entrySpliterator() { return CollectSpliterators.flatMap( asMap().entrySet().spliterator(), keyToValueCollectionEntry -> { K key = keyToValueCollectionEntry.getKey(); Collection<V> valueCollection = keyToValueCollectionEntry.getValue(); return CollectSpliterators.map( valueCollection.spliterator(), (V value) -> Maps.immutableEntry(key, value)); }, Spliterator.SIZED | (this instanceof SetMultimap ? Spliterator.DISTINCT : 0), size()); }
@Override protected Map<String, Collection<Integer>> makePopulatedMap() { Multimap<String, Integer> delegate = HashMultimap.create(); populate(delegate); return ImmutableMultimap.copyOf(delegate).asMap(); } }
@Override Spliterator<Entry<K, V>> entrySpliterator() { return CollectSpliterators.flatMap( asMap().entrySet().spliterator(), keyToValueCollectionEntry -> { K key = keyToValueCollectionEntry.getKey(); Collection<V> valueCollection = keyToValueCollectionEntry.getValue(); return CollectSpliterators.map( valueCollection.spliterator(), (V value) -> Maps.immutableEntry(key, value)); }, Spliterator.SIZED | (this instanceof SetMultimap ? Spliterator.DISTINCT : 0), size()); }
private static <K, V> void testMultimapAggWithGroupBy( InternalAggregationFunction aggregationFunction, GroupedAccumulator groupedAccumulator, int groupId, Type keyType, List<K> expectedKeys, Type valueType, List<V> expectedValues) { RowPageBuilder pageBuilder = RowPageBuilder.rowPageBuilder(keyType, valueType); ImmutableMultimap.Builder<K, V> outputBuilder = ImmutableMultimap.builder(); for (int i = 0; i < expectedValues.size(); i++) { pageBuilder.row(expectedKeys.get(i), expectedValues.get(i)); outputBuilder.put(expectedKeys.get(i), expectedValues.get(i)); } Page page = pageBuilder.build(); AggregationTestInput input = new AggregationTestInputBuilder( new Block[] {page.getBlock(0), page.getBlock(1)}, aggregationFunction).build(); AggregationTestOutput testOutput = new AggregationTestOutput(outputBuilder.build().asMap()); input.runPagesOnAccumulatorWithAssertion(groupId, groupedAccumulator, testOutput); }
private static ImmutableMultimap<ZipPath, ModuleEntry> discardAbiDirsWithTooFewFiles( ImmutableMultimap<ZipPath, ModuleEntry> libFilesByAbiDir) { int maxAbiFiles = libFilesByAbiDir.asMap().values().stream().mapToInt(Collection::size).max().orElse(0); // Create a set-based multimap for fast look-ups. return ImmutableSetMultimap.copyOf( Multimaps.filterKeys( libFilesByAbiDir, abiDir -> libFilesByAbiDir.get(abiDir).size() == maxAbiFiles)); }
@Override public void write(Kryo kryo, Output output, ImmutableMultimap<Object, Object> immutableMultiMap) { kryo.writeObject(output, ImmutableMap.copyOf(immutableMultiMap.asMap())); }
@Override public void forEach(BiConsumer<? super K, ? super V> action) { checkNotNull(action); asMap() .forEach( (key, valueCollection) -> valueCollection.forEach(value -> action.accept(key, value))); }
public Request url(String url) { UrlUtils.ParsedUrl parsedUrl = UrlUtils.parse(url); host = parsedUrl.host; port = parsedUrl.port; secure = parsedUrl.secure; path = parsedUrl.path; for (Map.Entry<String, Collection<String>> e : parsedUrl.headers.asMap().entrySet()) { headers.putAll(e.getKey(), e.getValue()); } return this; }
private ImmutableSet<ForeignKeyConstraint> extractMatchedFKs( ImmutableMultimap<RelationDefinition, ImmutableList<? extends VariableOrGroundTerm>> leftRelationArgumentMultimap, ImmutableList<? extends VariableOrGroundTerm> rightArguments, RelationDefinition rightRelation) { return leftRelationArgumentMultimap.asMap().entrySet().stream() .flatMap(e -> extractMatchedFKsForARelation(e.getKey(), e.getValue(), rightArguments, rightRelation)) .collect(ImmutableCollectors.toSet()); }
public static ImmutableMultimap<String, String> merge(ImmutableMultimap<String, String> headers, ImmutableMultimap<String, String> moreHeaders) { ImmutableMultimap.Builder<String, String> m = ImmutableListMultimap.builder(); m.putAll(headers); for (Map.Entry<String, Collection<String>> e : moreHeaders.asMap().entrySet()) { m.putAll(e.getKey(), e.getValue()); } return m.build(); } }
public <Intermediate, Final> ListenableFuture<Final> get( URL url, ImmutableMultimap<String, Object> headers, final HttpResponseHandler<Intermediate, Final> httpResponseHandler ) { RequestBuilder builder = get(url); for (Map.Entry<String, Collection<Object>> entry : headers.asMap().entrySet()) { builder.setHeaderValues(entry.getKey(), entry.getValue()); } return builder.go(httpResponseHandler); }
private PrefixManager mergePrefixManagers(ImmutableSet<Mapping> mappings) { ImmutableMap<String, Collection<String>> prefixToUris = mappings.stream() .flatMap(m -> m.getMetadata().getPrefixManager().getPrefixMap().entrySet().stream()) .collect(ImmutableCollectors.toMultimap()) .asMap(); ImmutableMap<String, String> prefixToUri = prefixToUris.entrySet().stream() .collect(ImmutableCollectors.toMap( e -> e.getKey(), e -> flattenURIList(e.getKey(), e.getValue()) )); return new SimplePrefixManager(prefixToUri); }
private PrefixManager mergePrefixManagers(ImmutableSet<Mapping> mappings) { ImmutableMap<String, Collection<String>> prefixToUris = mappings.stream() .flatMap(m -> m.getMetadata().getPrefixManager().getPrefixMap().entrySet().stream()) .collect(ImmutableCollectors.toMultimap()) .asMap(); ImmutableMap<String, String> prefixToUri = prefixToUris.entrySet().stream() .collect(ImmutableCollectors.toMap( Map.Entry::getKey, e -> flattenURIList(e.getKey(), e.getValue()) )); return new SimplePrefixManager(prefixToUri); }
private ImmutableCollection<Collection<ExtensionalDataNode>> groupDataNodesPerConstraint( FunctionalDependency constraint, ImmutableCollection<ExtensionalDataNode> initialNodes) { ImmutableList<Integer> constraintDeterminantIndexes = constraint.getDeterminants().stream() .map(Attribute::getIndex) .collect(ImmutableCollectors.toList()); ImmutableMultimap<ImmutableList<VariableOrGroundTerm>, ExtensionalDataNode> nodeMultiMap = initialNodes.stream() .collect(ImmutableCollectors.toMultimap( n -> extractDeterminantArguments(n.getProjectionAtom(), constraintDeterminantIndexes), n -> n)); return nodeMultiMap.asMap().values(); }