热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何使用java8中的Method参数打印多个参数

如何解决《如何使用java8中的Method参数打印多个参数》经验,为你挑选了3个好方法。


我正试图hashmap用两个java 打印出基本的.

Map mp = new HashMap();
mp.put(10, "apple");
mp.put(20, "orange");
mp.put(30, "banana");

但是当谈到method referencejava8 时,我无法弄清楚如何打印多个参数.


我试过这样的事.但它给了我编译错误.

mp.forEach(System.out::println(i+" "+s););

请帮我解决这个问题.
谢谢.



1> Naman..:

可能与其他答案相矛盾,但我真的不认为你需要在这里使用方法参考.恕我直言,

mp.forEach((i, s) -> System.out.println(i + " " + s));

对于这样的用例,它远比方法参考好.



2> Oleksandr Py..:

您可以编写一个单独的方法,例如:

public static  void printEntry(Map.Entry e) {
    System.out.println(e.getKey() + " " + e.getValue());
}

map.entrySet().forEach(Demo::printEntry);

或者,如果Map.Entry.toString()满足您的要求:

map.entrySet().forEach(System.out::println);

// 20=orange
// 10=apple
// 30=banana

编辑:此外,按照@Holger的建议,只要方法中的代码不依赖于它们,就可以安全地省略类型参数:

public static void printEntry(Object k, Object v) {
    System.out.println(k + " " + v);
}

map.forEach(Demo::printEntry);


@Oleksandr的意思是`entrySet :: forEach`与`Map :: forEach`具有相同的作用
我赞同Eugene的观点,由于这个原因,我们的答案之间的可读性差异非常明显。另外,请注意,如果执行相同的代码,则输出应在`='之前和之后包含空格,如果您打算任意比较它们,则会产生与`toString()`不同的输出。

3> Eugene..:

你不能.语言不允许这样,没有隐含的i和s可以通过那种方式传递给方法引用.你可以做什么,不知道为什么,但你可以:

private static  void consumeBoth(K k, V v) {
     //Log how u want this
}

并使用它:

map.forEach(Yourclass::consumeBoth)

但这可以用lambda表达式完成,我真的觉得这个小例子没什么好处


恕我直言[用例甚至不需要方法参考](/sf/ask/17360801/)......或者无论如何都有益吗?
推荐阅读
author-avatar
曾军78930
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有