50,544
社区成员
发帖
与我相关
我的任务
分享
@Test
public void testMap() {
System.out.println(MapPut.end((mp)->{mp.put("a", "b").put("c", "d");}).get("a"));
}
@FunctionalInterface
interface MapPut<K, V>{
public void putImpl(K key, V value);
public default MapPut<K,V> put(K key, V value) {
putImpl(key, value);
return this;
}
@SuppressWarnings({ "rawtypes", "rawtypes", "unchecked" })
public static Map end(MapBack mb) {
Map map = new HashMap();
mb.back((k, v)->map.put(k, v));
return map;
}
}
@FunctionalInterface
interface MapBack {
public void back(MapPut mp);
}
package pers.jassor.util.face;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Consumer;
/**
* 简单方便的Map函数式接口,使用get静态方法获取最终的Map
* 回调函数中的参数可以连续put值
* @author Jassor
*
* @param <K> 键的类型
* @param <V> 值的类型
*/
public interface MapPut<K, V>{
/*
* 一个简单地使用例子:
* Map map = MapPut.get((mp)->mp.put("a", "b").put("c", "d"));
* 得到的map中已经储存了两组键值对
*
*/
public void putImpl(K key, V value);
public default MapPut<K,V> put(K key, V value) {
putImpl(key, value);
return this;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public static Map getHash(Consumer<MapPut> mp) {
Map map = new HashMap();
mp.accept(map::put);
return map;
}
}