/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. All key-value mappings are copied from the input multimap. If any * collection of values in the input multimap contains duplicate elements, these are removed in the constructed multimap. * * @param multimap */ public static <K, V> SetMultimap<K, V> newSetMultimap(Multimap<K, V> multimap) { return new SetMultimap<K, V>(HashMap::new, HashSet::new, multimap); }
/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. All key-value mappings are copied from the input multimap. If any * collection of values in the input multimap contains duplicate elements, these are removed in the constructed multimap. * * @param multimap */ public static <K, V> SetMultimap<K, V> newSetMultimap(Multimap<K, V> multimap) { return new SetMultimap<K, V>(HashMap::new, HashSet::new, multimap); }
/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newSetMultimap() { return new SetMultimap<K, V>(HashMap::new, HashSet::new, null); }
/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newSetMultimap() { return new SetMultimap<K, V>(HashMap::new, HashSet::new, null); }
/** * Creates a new instance backed by a {@link ConcurrentHashMap} and synchronized {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newConcurrentSetMultimap(Supplier<Set<V>> valueSupplier) { return new SetMultimap<K, V>(ConcurrentHashMap::new, valueSupplier, null); }
/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newSetMultimap() { return new SetMultimap<K, V>(HashMap::new, HashSet::new, null); }
/** * Creates a new instance backed by a {@link ConcurrentHashMap} and synchronized {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newConcurrentSetMultimap(Supplier<Set<V>> valueSupplier) { return new SetMultimap<K, V>(null, new Supplier<ConcurrentMap<K, Set<V>>>() { @Override public ConcurrentMap<K, Set<V>> get() { return new ConcurrentHashMap<K, Set<V>>(); } }, valueSupplier, null); }
/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. All key-value mappings are copied from the input multimap. If any * collection of values in the input multimap contains duplicate elements, these are removed in the constructed multimap. * * @param multimap */ public static <K, V> SetMultimap<K, V> newSetMultimap(Multimap<K, V> multimap) { return new SetMultimap<K, V>(HashMap::new, HashSet::new, multimap); }
/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. All key-value mappings are copied from the input multimap. If any * collection of values in the input multimap contains duplicate elements, these are removed in the constructed multimap. * * @param multimap */ public static <K, V> SetMultimap<K, V> newSetMultimap(Multimap<K, V> multimap) { return new SetMultimap<K, V>(HashMap::new, HashSet::new, multimap); }
/** * Creates a new instance backed by a {@link ConcurrentHashMap} and synchronized {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newConcurrentSetMultimap(Supplier<Set<V>> valueSupplier) { return new SetMultimap<K, V>(ConcurrentHashMap::new, valueSupplier, null); }
/** * Creates a new instance backed by a {@link ConcurrentHashMap} and synchronized {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newConcurrentSetMultimap(Supplier<Set<V>> valueSupplier) { return new SetMultimap<K, V>(ConcurrentHashMap::new, valueSupplier, null); }
/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. All key-value mappings are copied from the input multimap. If any * collection of values in the input multimap contains duplicate elements, these are removed in the constructed multimap. * * @param multimap */ public static <K, V> SetMultimap<K, V> newSetMultimap(Multimap<K, V> multimap) { return new SetMultimap<K, V>(HashMap::new, HashSet::new, multimap); }
/** * Creates a new instance backed by a {@link ConcurrentHashMap} and synchronized {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newConcurrentSetMultimap(Supplier<Set<V>> valueSupplier) { return new SetMultimap<K, V>(ConcurrentHashMap::new, valueSupplier, null); }
/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newSetMultimap() { return new SetMultimap<K, V>(HashMap::new, HashSet::new, null); }
/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newSetMultimap() { return new SetMultimap<K, V>(HashMap::new, HashSet::new, null); }
/** * Creates a new instance backed by a {@link ConcurrentHashMap} and synchronized {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newConcurrentSetMultimap(Supplier<Set<V>> valueSupplier) { return new SetMultimap<K, V>(ConcurrentHashMap::new, valueSupplier, null); }
/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. */ public static <K, V> SetMultimap<K, V> newSetMultimap() { return new SetMultimap<K, V>(new Supplier<Map<K, Set<V>>>() { @Override public HashMap<K, Set<V>> get() { return new HashMap<K, Set<V>>(); } }, null, new Supplier<Set<V>>() { @Override public HashSet<V> get() { return new HashSet<V>(); } }, null); }
/** * Creates a new instance backed by a {@link HashMap} and {@link HashSet}. All key-value mappings are copied from the input multimap. If any * collection of values in the input multimap contains duplicate elements, these are removed in the constructed multimap. * * @param multimap */ public static <K, V> SetMultimap<K, V> newSetMultimap(Multimap<K, V> multimap) { return new SetMultimap<K, V>(new Supplier<Map<K, Set<V>>>() { @Override public HashMap<K, Set<V>> get() { return new HashMap<K, Set<V>>(); } }, null, new Supplier<Set<V>>() { @Override public HashSet<V> get() { return new HashSet<V>(); } }, multimap); }