【问题标题】:how to turn a foreach into a lambda?如何将 foreach 变成 lambda?
【发布时间】:2020-01-02 23:06:48
【问题描述】:

我知道它非常具体,但我创建了一个方法以将 Page 以特定方式放入 Treemap,效果很好,我想创建另一种方法来处理这样的多个页面

static void multiplePageAdder(TreeMap<String, Page> t, Page... myPages){
        for (Page p: myPages) {
            onePageAdder(t,p); //static void onePageAdder(TreeMap<String,Page> t,Page p)
        }
    }

我很确定我可以把它变成一个 lambda 表达式,但我不知道怎么做,你能帮我吗?

【问题讨论】:

  • 我不确定您要做什么。如果 Map 的类型为 &lt;String, Page&gt;,则每个键的页面不能超过一个。
  • @VGR 它看起来像递归,但请注意内部循环 OP 调用 pageAdder 而不是 page*s*Adder
  • @Pshemo 啊,很好,我忽略了这一点。
  • 是的,对不起,我会改变它
  • 您可以将您的代码重写为Arrays.stream(myPages).forEach(p-&gt;onePageAdder(t,p)); 之类的东西,但我不确定您为什么要这样做。您现在所拥有的 IMO 足够清晰,并且将具有与流类似的性能。 BTW lambda 只是这部分p-&gt;onePageAdder(t,p),我之前写的是流管道。

标签: java lambda foreach


【解决方案1】:

感谢@Pshemo,我学会了使用Arrays.stream(),就像他提议的那样,我使用了

Arrays.stream(myPages).forEach(p->onePageAdder(t,p));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2023-03-28
    • 2012-04-30
    • 2014-06-11
    相关资源
    最近更新 更多