我有這個物件,其中每個規則存盤一個規則串列:
public class Rule {
private String name;
private String condition;
private List<String> result;
private List<Rule> rules;
private Map<String, List<String>> aliases = Maps.newHashMap();
private boolean last = false;
}
遍歷所有鏈接物件并將所有“結果”欄位插入串列的最聰明和最有效的方法是什么,而不管它們來自哪個物件?最終我想要一個清單:
List<String> results
包含所有物件的所有結果。
我已經嘗試了幾個小時,非常感謝您的幫助。獲取所有物件的串列本身也對我有幫助,例如展平樹。
uj5u.com熱心網友回復:
您可以使用流
這是我的遞回版本,用于將規則串列映射到結果流
private Stream<String> mapToRules(List<Rule> rules) {
return Stream.concat(rules.stream()
.map(Rule::getResult)
.flatMap(List::stream),
rules.stream()
.map(Rule::getRules)
.flatMap(this::mapToRules));
}
單根版本
private Stream<String> mapToRules(Rule rule) {
return Stream.concat(rule
.getResult()
.stream(),
rule.getRules()
.stream()
.flatMap(this::mapToRules));
}
然后,您可以將此流收集到串列中
mapToRules(list).collect(Collectors.toList());
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/363342.html