使用java8-11优化2loop的迭代

使用java8-11优化2loop的迭代,java,spring-boot,Java,Spring Boot,我有一个包含钥匙和地图的列表。现在,当列表值和map的键匹配时,我需要做一些操作。 为此,我编写了以下代码 list.stream().foreach(listelement ->{ mapelements.forEach((k,v) -> { if (listelement.trim().equalscaseignorecase(k)) //Do someting }); }); 有谁能建议我如何使用Java8-11优化这段代码吗。就像使用java8的stream()、filt

我有一个包含钥匙和地图的列表。现在,当列表值和map的键匹配时,我需要做一些操作。 为此,我编写了以下代码

list.stream().foreach(listelement ->{
mapelements.forEach((k,v) -> {
if (listelement.trim().equalscaseignorecase(k))
//Do someting
});
}); 

有谁能建议我如何使用Java8-11优化这段代码吗。就像使用java8的stream()、filter()等特性一样,使用您设计的数据结构没有很好的优化方法

问题是map中的键区分大小写,并且在
get
方法进行区分大小写查找的(标准)
map
类上,无法执行有效的不区分大小写的查找。您必须为每个列表项迭代映射项。。。就像你现在做的那样。使用过滤器或其他流特性并不能解决这个问题

要解决此问题,您需要更改数据结构,以便可以执行
O(1)
O(logN)
不区分大小写的查找

选项1:使用
HashMap
并使map中的键不区分大小写;e、 g.在创建地图条目之前,将其转换为小写


选项2:将
TreeMap
与不区分大小写的
比较器一起使用。(这还有其他后果。请阅读。)

您认为it>为什么需要<优化?哪一步是性能热点?我们可以使用过滤器和单个迭代吗?这就是我使用hashmap优化已经实现的代码的意思。。但问题是我对java8编码非常陌生..我需要使用fliter和任何其他java8特性并修改我现有的codeWell。。。就像我说的。。。过滤器和其他Java8特性不能解决这个问题。不管你有多需要。你不用螺丝刀钉钉子。