我正在尝试将我几个月前制作的常规循环转换为 java 8streams我对流的了解不多,因为我几天前才开始使用 java 8。
这是我想重新创建到流中的常规循环
public static List<SmaliAnnotation> getAnnotations(List<String> lines, boolean hasPadding) {
StringBuilder temp = new StringBuilder();
List<SmaliAnnotation> annotations = new ArrayList<>();
boolean shouldAdd = false;
for (String line : lines) {
String trim = hasPadding ? line.trim() : line;
if (trim.isEmpty()) continue;
if (trim.startsWith(".annotation")) {
shouldAdd = true;
}
if (shouldAdd) {
temp.append(line).append("\n");
}
if (trim.equalsIgnoreCase(".end annotation")) {
shouldAdd = false;
annotations.add(new SmaliAnnotation(temp.toString()));
temp.setLength(0);
}
}
return annotations;
}
我已经开始将它转换为 java 8 流,但我被困在了这个shouldAdd部分。我不知道如何用流来实现这一点。这是我制作 Java 流的尝试。我不明白的是如何从原始循环中设置布尔值部分。
public static List<SmaliAnnotation> getAnnotations(List<String> lines, boolean hasPadding) {
StringBuilder temp = new StringBuilder();
boolean shouldAdd = false;
return lines.stream()
.filter(str -> str != null && !str.isEmpty())
.map(line -> hasPadding ? line.trim() : line)
.map(SmaliAnnotation::new)
.collect(Collectors.toList());
}
犯罪嫌疑人X
慕斯709654
相关分类