All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.core.map.FuncMap Maven / Gradle / Ivy

There is a newer version: 5.8.33
Show newest version
package cn.hutool.core.map;

import java.util.Map;
import java.util.function.Function;
import java.util.function.Supplier;

/**
 * 自定义键值函数风格的Map
 *
 * @param  键类型
 * @param  值类型
 * @author Looly
 * @since 5.8.0
 */
public class FuncMap extends TransMap {
	private static final long serialVersionUID = 1L;

	private final Function keyFunc;
	private final Function valueFunc;

	// ------------------------------------------------------------------------- Constructor start

	/**
	 * 构造
* 注意提供的Map中不能有键值对,否则可能导致自定义key失效 * * @param mapFactory Map,提供的空map * @param keyFunc 自定义KEY的函数 * @param valueFunc 自定义value函数 */ public FuncMap(Supplier> mapFactory, Function keyFunc, Function valueFunc) { this(mapFactory.get(), keyFunc, valueFunc); } /** * 构造
* 注意提供的Map中不能有键值对,否则可能导致自定义key失效 * * @param emptyMap Map,提供的空map * @param keyFunc 自定义KEY的函数 * @param valueFunc 自定义value函数 */ public FuncMap(Map emptyMap, Function keyFunc, Function valueFunc) { super(emptyMap); this.keyFunc = keyFunc; this.valueFunc = valueFunc; } // ------------------------------------------------------------------------- Constructor end /** * 根据函数自定义键 * * @param key KEY * @return 驼峰Key */ @Override protected K customKey(Object key) { if (null != this.keyFunc) { return keyFunc.apply(key); } //noinspection unchecked return (K) key; } @Override protected V customValue(Object value) { if (null != this.valueFunc) { return valueFunc.apply(value); } //noinspection unchecked return (V) value; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy