Class AbstractCollValueMap<K,V>

java.lang.Object
org.miaixz.bus.core.center.map.MapWrapper<K,Collection<V>>
org.miaixz.bus.core.center.map.multi.AbstractCollValueMap<K,V>
Type Parameters:
K - 键类型
V - 值类型
All Implemented Interfaces:
Serializable, Cloneable, Iterable<Map.Entry<K,Collection<V>>>, Map<K,Collection<V>>, MultiValueMap<K,V>, Wrapper<Map<K,Collection<V>>>
Direct Known Subclasses:
CollectionValueMap, ListValueMap, SetValueMap

public abstract class AbstractCollValueMap<K,V> extends MapWrapper<K,Collection<V>> implements MultiValueMap<K,V>
MultiValueMap的基本实现
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Field Details

    • DEFAULT_COLLECTION_INITIAL_CAPACITY

      protected static final int DEFAULT_COLLECTION_INITIAL_CAPACITY
      默认集合初始大小
      See Also:
  • Constructor Details

    • AbstractCollValueMap

      protected AbstractCollValueMap(Supplier<Map<K,Collection<V>>> mapFactory)
      使用mapFactory创建的集合构造一个多值映射Map集合
      Parameters:
      mapFactory - 生成集合的工厂方法
    • AbstractCollValueMap

      protected AbstractCollValueMap(Map<K,Collection<V>> map)
      基于HashMap构造一个多值映射集合
      Parameters:
      map - 提供初始数据的集合
    • AbstractCollValueMap

      protected AbstractCollValueMap()
      基于HashMap构造一个多值映射集合
  • Method Details

    • putAllValues

      public boolean putAllValues(K key, Collection<V> coll)
      将集合中的全部元素对追加到指定键对应的值集合中,效果等同于:
      
       coll.forEach(t -> map.putValue(data, t))
       
      Specified by:
      putAllValues in interface MultiValueMap<K,V>
      Parameters:
      key - 键
      coll - 待添加的值集合
      Returns:
      是否成功添加
    • putValue

      public boolean putValue(K key, V value)
      向指定键对应的值集合追加值,效果等同于:
      
       map.computeIfAbsent(data, k -> new Collection()).add(value)
       
      Specified by:
      putValue in interface MultiValueMap<K,V>
      Parameters:
      key - 键
      value - 值
      Returns:
      是否成功添加
    • removeValue

      public boolean removeValue(K key, V value)
      将值从指定键下的值集合中删除
      Specified by:
      removeValue in interface MultiValueMap<K,V>
      Parameters:
      key - 键
      value - 值
      Returns:
      是否成功删除
    • removeAllValues

      public boolean removeAllValues(K key, Collection<V> values)
      将一批值从指定键下的值集合中删除
      Specified by:
      removeAllValues in interface MultiValueMap<K,V>
      Parameters:
      key - 键
      values - 值
      Returns:
      是否成功删除
    • filterAllValues

      public MultiValueMap<K,V> filterAllValues(BiPredicate<K,V> filter)
      根据条件过滤所有值集合中的值,并以新值生成新的值集合,新集合中的值集合类型与当前实例的默认值集合类型保持一致
      Specified by:
      filterAllValues in interface MultiValueMap<K,V>
      Parameters:
      filter - 判断方法
      Returns:
      当前实例
    • replaceAllValues

      public MultiValueMap<K,V> replaceAllValues(BiFunction<K,V,V> operate)
      根据条件替换所有值集合中的值,并以新值生成新的值集合,新集合中的值集合类型与当前实例的默认值集合类型保持一致
      Specified by:
      replaceAllValues in interface MultiValueMap<K,V>
      Parameters:
      operate - 替换方法
      Returns:
      当前实例
    • createCollection

      protected abstract Collection<V> createCollection()
      创建集合 此方法用于创建在putValue后追加值所在的集合,子类实现此方法创建不同类型的集合
      Returns:
      Collection