
com.magictools.core.map.multi.CollectionValueMap Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of magic-tools-all Show documentation
Show all versions of magic-tools-all Show documentation
magic-tools 是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
The newest version!
package com.magictools.core.map.multi;
import com.magictools.core.lang.func.Func0;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
/**
* 值作为集合的Map实现,通过调用putValue可以在相同key时加入多个值,多个值用集合表示
* 此类可以通过传入函数自定义集合类型的创建规则
*
* @param 键类型
* @param 值类型
* @author looly
* @since 4.3.3
*/
public class CollectionValueMap extends AbsCollValueMap> {
private static final long serialVersionUID = 9012989578038102983L;
private final Func0> collectionCreateFunc;
// ------------------------------------------------------------------------- Constructor start
/**
* 构造
*/
public CollectionValueMap() {
this(DEFAULT_INITIAL_CAPACITY);
}
/**
* 构造
*
* @param initialCapacity 初始大小
*/
public CollectionValueMap(int initialCapacity) {
this(initialCapacity, DEFAULT_LOAD_FACTOR);
}
/**
* 构造
*
* @param m Map
*/
public CollectionValueMap(Map extends K, ? extends Collection> m) {
this(DEFAULT_LOAD_FACTOR, m);
}
/**
* 构造
*
* @param loadFactor 加载因子
* @param m Map
*/
public CollectionValueMap(float loadFactor, Map extends K, ? extends Collection> m) {
this(loadFactor, m, ArrayList::new);
}
/**
* 构造
*
* @param initialCapacity 初始大小
* @param loadFactor 加载因子
*/
public CollectionValueMap(int initialCapacity, float loadFactor) {
this(initialCapacity, loadFactor, ArrayList::new);
}
/**
* 构造
*
* @param loadFactor 加载因子
* @param m Map
* @param collectionCreateFunc Map中值的集合创建函数
* @since 5.7.4
*/
public CollectionValueMap(float loadFactor, Map extends K, ? extends Collection> m, Func0> collectionCreateFunc) {
this(m.size(), loadFactor, collectionCreateFunc);
this.putAll(m);
}
/**
* 构造
*
* @param initialCapacity 初始大小
* @param loadFactor 加载因子
* @param collectionCreateFunc Map中值的集合创建函数
* @since 5.7.4
*/
public CollectionValueMap(int initialCapacity, float loadFactor, Func0> collectionCreateFunc) {
super(new HashMap<>(initialCapacity, loadFactor));
this.collectionCreateFunc = collectionCreateFunc;
}
// ------------------------------------------------------------------------- Constructor end
@Override
protected Collection createCollection() {
return collectionCreateFunc.callWithRuntimeException();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy