哪个是有效的,更好的方法btw过滤器和for循环

时间:2017-06-01 20:53:38

标签: java performance for-loop filter resources

我在NamAryVar中有一个Class Object列表 我需要检查String是否等于列表中任何NamCar的NamVar 我这样做有两种方式,我得到了理想的结果 但
我想知道哪种更快,更有效,并且在这两种方法中使用更少的资源。

| * |使用for循环:

boolean FndResVab = false;
for(NamCls NamObjIdxVar : NamAryVar)
{
    if(NamObjIdxVar.NamVar.equals("SomString"))
    {
        FndDupVab = true;
        break;
    }
}

| O |使用列表过滤器:

Boolean FndResVab = NamAryVar.stream()
                        .filter(IdxVar -> IdxVar.NamVar.equals("SomString"))
                        .count() == 1;

if(FndResVab)
{
    // TskTdo :=> When Found
}
else
{
    // TskTdo :=> When Not Found
}

1 个答案:

答案 0 :(得分:0)

Java 8流几乎总是比常规迭代执行得更糟。这些流被添加到Java中,将函数式编程结构引入语言,从而为程序员提供便利。易用性和可维护性是流背后的主要动力。

看一下这篇文章:How Java 8 Lambdas and Streams Can Make Your Code 5 Times Slower

这个问题:Java 8: performance of Streams vs Collections