lambda - 使用 JAVA 8 遍历附加到 ArrayList 的 MAP 条目元素
问题描述
如何迭代附加到 ArrayList 的 MAP 条目的值。(List<Map<Set, Map.Entry<String, Object>>>) 我是 java 8 的新手,我想通过使用 lambda 表达式获取该 MAP 条目的值。我想避免早于版本 8 的 java 使用此语句。
List<Object> listeDesValeurs = new ArrayList<Object>();
for (int i = 0; i < listExtractQglobal.size(); i++) {
for (Entry<String, Object> entry : listExtractQglobal.get(i)
.entrySet()) {
listeDesValeurs.add(entry.getValue());
}
}
真的非常感谢!
解决方案
如果你想用 Java 8 风格(使用 lambda 表达式和方法引用)编写上面的代码,你可以这样写:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Map<String, Object>> myMapsList = new ArrayList<>(); // My list, consisting of maps
Map<String, Object> someSampleMap = new HashMap<String, Object>();
someSampleMap.put("bla", new Object());
myMapsList.add(someSampleMap);
List<Object> resultsList = new ArrayList<Object>(); // The list that I want to put all my mal values into
resultsList = myMapsList.stream().flatMap(myMap -> myMap.entrySet().stream()).map(Entry::getValue).collect(Collectors.toList());
System.out.println(resultsList.size()); // should print out 1, since the arraylist myMapsList only has one map which in turn has only one entry
}
}
推荐阅读
- java - 错误:无法找到或加载主类 [Intellij]
- postgresql - 为复杂的搜索查询创建索引
- python-3.x - group pandas DataFrame by one column and then get lists of values which occur in those categories from other column
- android - Kotlin Android debounce
- java - TextToSpeech 无法正确停止
- java - 如何根据用户的触摸移动图像?
- elasticsearch - 跨多个索引/过滤器的查询的function_score未按预期工作
- c# - relaxed Security AppiumService
- c - OpenMP 中的 threadprivate 错误
- php - FPDF 正确打印 NumberFormatter 类给出的货币符号