java - 我应该重构它以使用地图吗?
问题描述
我有一个产品列表,它们可以有不同的形式。我想将多个表单分组在同一个组下,例如 form1、form2 和 form3 现在被视为 group1。配置输入以指示表单应属于组的方式如下:
["form1,group1", "form2,group1", "form3,group1"]
对他们来说,将字符串分开并替换我想出的以下代码:
if (!formAliasList.isEmpty() && !form.isEmpty()) {
for(String alias: formAliasList) {
String[] splitted = alias.split(",",2);
if(splitted[0].trim().toLowerCase().contains(form.toLowerCase()))
form = splitted[1];
}
}
这工作得很好。但我觉得这也许可以简化成一张地图,如果是这样,我应该这样做吗?
解决方案
你可以用流来做到这一点:
String[] array = {"form1,group1", "form2,group1", "form4,group2", "form3,group1"};
Map<String, List<String>> map = Stream.of(array)
.filter(item -> item.contains(","))
.map(item -> item.split(","))
.collect(Collectors.groupingBy(
item -> item[1],
Collectors.mapping(item -> item[0], Collectors.toList()))
);
System.out.println(map);
输出将是:{group2=[form4], group1=[form1, form2, form3]}
推荐阅读
- javascript - 使用节点中的循环异步等待承诺
- nginx - 尽管在 nginx 配置中添加了标头,但在 Edge/Firefox 中出现 CORS 错误
- python - 如何创建将存储 JSON 并将在会话结束时删除的 TEMP 文件
- ontology - 如何使用本体作为模式来填充(插入大量现实生活数据)?
- excel - 在 Excel 中更改父下拉列表时清除相关下拉列表
- r - 无法从 R 中的 popbio 包中定义 projection.matrix 函数的阶段
- bash - awk 循环打印错误的次数
- android - 如何在 Android Studio 中使用“国际化”(重构)选项?
- vb.net - 在 DataGridView.ComboBoxColumn 上触发选定值更改事件
- tensorflow - 处理自定义数据增强层中的批量大小 - tensorflow