【发布时间】:2017-03-02 10:44:27
【问题描述】:
我有一个将映射添加到缓存的方法,我想知道我可以做些什么来使用 Java 8 简化这个循环。
到目前为止我做了什么:
我们都知道的标准循环:
for(int i = 0; i < catalogNames.size(); i++){
List<GenericCatalog> list = DummyData.getCatalog(catalogNames.get(i));
Map<String, GenericCatalog> map = new LinkedHashMap<>();
for(GenericCatalog item : list){
map.put(item.name.get(), item);
}
catalogCache.put(catalogNames.get(i), map);};
使用 forEach 进行第二次迭代:
catalogNames.forEach(e -> {
Map<String, GenericCatalog> map = new LinkedHashMap<>();
DummyData.getCatalog(e).forEach(d -> {
map.put(d.name.get(), d);
});
catalogCache.put(e, map);});
第三次迭代删除了不必要的括号:
catalogNames.forEach(objName -> {
Map<String, GenericCatalog> map = new LinkedHashMap<>();
DummyData.getCatalog(objName).forEach(obj -> map.put(obj.name.get(), obj));
catalogCache.put(objName, map);});
我现在的问题是可以进一步做些什么来简化这一点?
我确实知道此时实际上没有必要用这种方法做任何其他事情,但是,我对这些可能性感到好奇。
【问题讨论】:
-
提示:更短并不总是意味着更简单
-
为什么要简化这个。我认为您的解决方案 #2 是构想的,您可以直接了解它的作用。
-
正如我在问题中所说,我同意解决方案#2 和解决方案#3 既简单又简单(我在代码atm 中使用#2)。我只是好奇还能做些什么。