| // Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| package com.android.tools.r8.utils.collections; |
| |
| import java.util.Collection; |
| import java.util.Map; |
| import java.util.Set; |
| |
| /** Interface that provides mutable access to the implementation of a many-to-one mapping. */ |
| public interface MutableBidirectionalManyToOneMap<K, V> extends BidirectionalManyToOneMap<K, V> { |
| |
| void clear(); |
| |
| V put(K key, V value); |
| |
| void put(Iterable<K> key, V value); |
| |
| default void putAll(BidirectionalManyToOneMap<K, V> map) { |
| map.forEach(this::put); |
| } |
| |
| default void putAll(Map<K, V> map) { |
| map.forEach(this::put); |
| } |
| |
| V remove(K key); |
| |
| void removeAll(Iterable<K> keys); |
| |
| Set<K> removeValue(V value); |
| |
| default void removeValues(Collection<V> values) { |
| values.forEach(this::removeValue); |
| } |
| } |