当前位置: 代码迷 >> java >> 方法主体中的lambda表达式
  详细解决方案

方法主体中的lambda表达式

热度:47   发布时间:2023-07-25 19:01:29.0

我有这样的方法

public void doThis(){
   Predicate<String> p = (arg) -> true;
   doThat(p);
}

与不使用lambda相比,这会对性能产生任何影响吗? 是否可以将此lambda表达式存储为实例变量以使其更好?

您可以看到效果:

public static void main(String[] args) {
        System.out.println("Predicate using Lamda");
        System.out.println(System.currentTimeMillis());
        doThis();
        System.out.println(System.currentTimeMillis());

        System.out.println("Predicate using Without Lamda");
        System.out.println(System.currentTimeMillis());
        doThisWithoutLamda();
        System.out.println(System.currentTimeMillis());

        System.out.println("Predicate using Lamda 100000");
        System.out.println(System.currentTimeMillis());
        for (int i = 0; i < 100000; i++) {
            doThis();
        }
        System.out.println(System.currentTimeMillis());

        System.out.println("Predicate using Without Lamda 100000");
        System.out.println(System.currentTimeMillis());
        for (int i = 0; i < 100000; i++) {
            doThisWithoutLamda();
        }
        System.out.println(System.currentTimeMillis());
    }

    public static void doThis() {
        Predicate<String> p = (arg) -> true;

    }

    public static void doThisWithoutLamda() {
        Predicate<String> p = new Predicate<String>() {
            @Override
            public boolean evaluate(String object) {
                return true;
            }
        };

    }

输出:

Predicate using Lamda
1551087600419
1551087600491
Predicate using Without Lamda
1551087600491
1551087600492
Predicate using Lamda 100000
1551087600492
1551087600496
Predicate using Without Lamda 100000
1551087600496
1551087600500

  相关解决方案