如何优雅的实例化一个一次使用的Map对象

henan_caiyao 2016-01-08 04:58:09
经常为了封装参数,需要实例化Map对象,但是这个map只使用一次,完全不需要定义变量,请问有什么优雅的实例方式,第三方jar功能也行,没多少分了,大家一起讨论下吧
...全文
718 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Royal_lr 2016-03-02
  • 打赏
  • 举报
回复
也没看出来有多优雅啊
iamjsber 2016-03-01
  • 打赏
  • 举报
回复
引用 2 楼 sunquan291 的回复:
json对象
对 这是好东西
  • 打赏
  • 举报
回复
引用 8 楼 henan_caiyao 的回复:
#4楼 @qq_26946497 这个看起来不错
henan_caiyao 2016-02-29
  • 打赏
  • 举报
回复
#4楼 @qq_26946497 这个看起来不错
鸣鸣Amadues 2016-01-10
  • 打赏
  • 举报
回复
“只使用一次”为什么能推出“不需要定义变量”?这个无法理解。 程序员要做的是要保证程序层次结构清晰,简单易读,代码优雅不优雅真的不是很重要,再说每个人对优雅定义不同。
scmod 2016-01-10
  • 打赏
  • 举报
回复
这有啥优雅不优雅的....
  • 打赏
  • 举报
回复
已经调到最优啦! 只需要在项目中贴这么一个Interface,代码中的绿色注释已经写出来用法了
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;
	}
}

  • 打赏
  • 举报
回复
我也不知道该怎么样才能优雅,不过看起来可以用java8实现这一点。 当然现在展示的相当不优雅,但是封装一下,外面用起来就会很爽!


	@Test
	public void testMap() {
		
		System.out.println(
					(
							(
								(MapEnd)
								()->{
									Map map = new HashMap();
									MapPut mp = (k, v)->map.put(k, v);;
									mp.put("a", "b");
									return map;
								}
							).end()
					).get("a")
				);
	}
	

@FunctionalInterface
interface MapPut<M, K, V>{
	
	public void putImpl(K key, V value);
	
	public default MapPut<M, K,V> put(K key, V value) {
		putImpl(key, value);
		return this;
	}
}

@FunctionalInterface
interface MapEnd {
	public Map end();
}

中间的mp可以实现连续打点存值。
风马博客 2016-01-09
  • 打赏
  • 举报
回复
这边是经常用到的东西,我用的就是 Map<?,?> map=new HashMap<?,?>(); 或者直接赋值null.
加权不平权 2016-01-09
  • 打赏
  • 举报
回复
json对象
心随自在飞 2016-01-08
  • 打赏
  • 举报
回复
什么才叫优雅地! 封装对象吧,就不用map了

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧