Tis*_*ash 5 java java-8 java-stream
我想减小地图对象有序列表的大小(删除一些元素)。除非满足某个条件,否则应丢弃 list 的所有对象。当满足该条件时,该列表的所有下一个元素都应保留在列表中。我有以下一段代码。我想对 Java 8 做同样的事情。
public List<Map<String, String>> doAction(List<Map<String, String>> dataVoMap) {
List<Map<String,String>> tempMap = new ArrayList<>();
boolean found = false;
for(Map<String, String> map: dataVoMap){
if(map.get("service_id").equalsIgnoreCase("passed value") || found){
found = true;
tempMap.add(map);
}
}
dataVoMap = tempMap;
return dataVoMap;
}
Run Code Online (Sandbox Code Playgroud)
您正在寻找一种dropWhile操作,但该操作的内置实现需要 Java-9 及更高版本:
public List<Map<String, String>> doAction(List<Map<String, String>> dataVoMap) {
return dataVoMap.stream()
.dropWhile(m -> !"passed value".equalsIgnoreCase(m.get("service_id")))
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
注意:我对现有代码进行了编辑,以避免Map在List没有密钥的情况下可能存在 NPE service_id。
| 归档时间: |
|
| 查看次数: |
1245 次 |
| 最近记录: |