当前位置: 首页 > 知识库问答 >
问题:

使用附加列表进行代码优雅的性能影响

吕自明
2023-03-14

我要考虑的例子是检查不同源的返回值是否为null,例如:

String value = mapSource1.get(key1);
if (value == null) value = mapSource2.get(key2);
if (value == null) value = mapSource3.get(key3);
// etc...

这可以用流来完成,例如:

String value = Arrays.asList(mapSource1.get(key1),  mapSource2.get(key2),  mapSource3.get(key3)).stream()
    .filter(s -> s != null)
    .findFirst();
    null

但是它没有回答我的问题,因为它只讨论了列表与数组或其他集合的关系。一般来说,我的问题集中在一个没有列表也可以完成的问题上,但我在其中添加了列表,以便使用流,并使代码更符合我的标准。

在我上面描述的场景中,它会对代码性能产生多大影响?

共有1个答案

龚振
2023-03-14

如果只有两三个源映射,则可能需要使用:

String value = mapSource1.getOrDefault(key1, 
                   mapSource2.getOrDefault(key2, 
                      mapSource3.getOrDefault(key3, "someDefaultValue")));
 类似资料:
  • 问题内容: 我试图与我正在阅读的有关SQL Server查询性能的书的作者联系,但似乎本书中提供的电子邮件地址已不复存在。因此,我决定向社区询问。我正在粘贴我在下面写的消息。提前致谢。 ====== 我已经购买了您的书(蒸馏而成的SQL Server 2008查询性能调优),并且知道我的SQL Server Express Edition将不支持运行必要的性能测试所需的许多重要工具。正如您已经说过

  • JavaScript代码优化 1、慎用全局变量 为什么要慎用全局变量原因如下 1、全局变量定义在全局执行上下文,是所有作用域链的顶端 2、全局执行上下文一直存在于上下文执行站,直到程序退出 3、如果某个局部作用域出现了同名变量则会遮蔽或污染全局 2、缓存全局变量 其实就是在程序执行过程中,将使用中无法避免的全局变量缓存到局部 代码演示如下 1、普通写法: function getBt

  • `多处理系统中,使用并发的方式来提高代码的效率时,你需要了解一下有哪些因素会影响并发的效率。即使已经使用多线程对关注进行分离,还需要确定是否会对性能造成负面影响。因为,在16核机器上应用的速度与单核机器相当时,用户是不会打死你的。 之后你会看到,在多线程代码中有很多因素会影响性能——对线程处理的数据做一些简单的改动(其他不变),都可能对性能产生戏剧性的效果。所以,多言无益,让我们来看一下这些因素吧

  • 问题内容: 我们已经开始将spring aop用于我们应用程序的各个方面(当前的安全性和缓存)。 我的经理虽然十分了解这种技术的好处,但仍担心该技术对性能的影响。 我的问题是,你是否遇到了使用aop(特别是spring aop)引入的性能问题? 问题答案: 只要你能够控制自己的AOP,我就认为它是有效的。无论如何,我们确实确实存在性能问题,所以通过我们自己的推理,我们无法完全控制;)这主要是因为重

  • 我需要一个解决方案来提高这种方法的性能。我需要使用LinkedHashMap按顺序插入这些输入,它工作得很好。然而,我不喜欢这个解决方案,因为我有一个列表,每次我都要通过它来检索我想插入到这个地图中的输入。 这是我的密码 我需要一种方法来检索这些对象,而无需重复此列表3次。

  • 简而言之:在我的JSP中,我需要使用C:Foreach jstl迭代一个自定义bean类列表,比如list,MyClass有键和值变量,以及这些变量的getter和setter 细节:类似这样的内容: 在Java代码中,我有: List pairlist=new ArrayList();//MyClass是一个简单的bean类,具有变量“key”和“value”,以及相同的getter和sette