Lau*_*eto 5 java drools java-8 spring-boot
如何通过两个对象属性将一个对象内的列表分组?
我正在使用Drools 7.9.0和Java8。我有一个Result类,用于返回每个匹配的Drools规则。
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
public class Result implements Serializable {
private Integer id;
private String name;
private List<Occurrences> occurrences = new ArrayList<>();
public void addOccurrence(Occurrences occurrence) {
this.occurrences.add(occurrence);
}
}
Run Code Online (Sandbox Code Playgroud)
Drools执行后,我得到一个List<Result>。转换为JSON看起来像这样。
当前成果:
[
{
name: "Whatever"
id: 0001,
occurrences: [{
(...)
}]
},
{
name: "Whatever"
id: 0001,
occurrences: [{
(...)
}]
},
{
name: "Whatever"
id: 0002,
occurrences: [{
(...)
}]
},
{
name: "Other thing"
id: 0002,
occurrences: [{
(...)
}]
}
]
Run Code Online (Sandbox Code Playgroud)
我需要对Results 列表ocurrences进行分组,以便按id和分组name,就像这样。
预期结果:
[
{
name: "Whatever"
id: 0001,
occurrences: [{
(...)
}, {
(...)
}]
},
{
name: "Whatever"
id: 0002,
occurrences: [{
(...)
}]
},
{
name: "Other thing"
id: 0002,
occurrences: [{
(...)
}]
}
]
Run Code Online (Sandbox Code Playgroud)
实施此方法的最佳方法是什么?我有两个选择:
List<Result>就已经可以按我的方式进行结构化了。也许创建一个类与addResult方法检查列表id和name和发生添加到右侧的条目。但这并不理想,因为这会增加规则内部的复杂性。List<Result>以便将occurrencesby id和分组name。但是我不知道如何以优化和简单的方式执行此操作。做第二个选择的最好方法是什么?
| 归档时间: |
|
| 查看次数: |
405 次 |
| 最近记录: |