java - Using string stream as split result in lambda
问题描述
I need to split line based on comma and add it to a Map
simultaneously in one go. I know that I can collect the splitted stream to list and then iterate over list for same effect. But I need to know if that can be done.
Input
: List<String>
- (A, B) (A,C)
Output
: Map<String, List<String>>
- (A, (B,C))
Example Code : (Contains Error)
public void edgeListRepresentation(ArrayList<String> edges){
Map<String, List<String>> edgeList = new HashMap<>();
edges.forEach(connection -> {
Stream.of(connection.split(","))
.map((arr) -> {
edgeList.computeIfAbsent(arr[0], val -> new ArrayList<String>()).add(arr[1]);
});
});
}
public static void main(String[] args) throws IOException {
EdgeList edgeList = new EdgeList();
edgeList.edgeListRepresentation(new ArrayList<String>(){
{
add("A, B");
add("A, C");
add("A, E");
add("B, C");
add("C, E");
add("C, D");
add("D, E");
}
});
}
解决方案
如果您想以自己的方式使其简单,则无需使用流
edges.forEach(connection -> {
String[] arr = connection.split(",");
edgeList.computeIfAbsent(arr[0], val -> new ArrayList<String>()).add(arr[1].trim());
});
推荐阅读
- php - PDO:如果 UPDATE :column 和 WHERE :column 相同,则防止值覆盖
- tensorflow - Deeplab:“未能找到所有 Cityscapes 模块”
- python - 一个长期的难题,如何在 python 中优化多级循环?
- android - 测试暂停 corotuine
- javascript - 正确禁用 Angular 5 输入字段
- excel - Excel数据透视表,VBA,将所有字段值更改为计数
- c# - C# HttpClient 无法验证 POST 请求中提供的 CSRF 令牌
- c# - 需要帮助将数学课集成到 Windows 窗体计算器中
- c# - 模拟插入返回 0 作为 entity.Id 但在托管应用程序并使用 Curl 请求时工作
- c++ - 破坏然后在这个内部成员函数定义的行为中构造?