这是纲领:
public List<List<Fieldmatrix>> permute(List<Fieldmatrix> fields, int start, List<Fieldmatrix> prefix) {
List<List<Fieldmatrix>> combinations = new ArrayList<>();
if (start >= fields.size()) {
combinations.add(prefix);
return combinations;
}
String field = fields.get(start).getFieldName();
if (fields.get(start).isMandatory() == false) {
combinations.addAll(combine(fields, start + 1, prefix));
}
List<Fieldmatrix> prefixWithField = new ArrayList<>(prefix);
prefixWithField.add(new Fieldmatrix (field, fields.get(start).isMandatory(), fields.get(start).getFieldtype(), new ArrayList<>()));
combinations.addAll(combine(fields, start + 1, prefixWithField));
return combinations;
}
我的想法是:例如,我有一个包含这些字段的XML
结果是:
字段的值为true或false。可以删除虚假字段。因此,程序会找到这些字段的所有可能组合。
Fieldmatrix:
public class Fieldmatrix {
private String fieldName;
private boolean mandatory;
private Type fieldtype;
private List<Fieldmatrix> list = new ArrayList<>();
public Fieldmatrix(String fieldName, boolean mandatory, Type fieldtype, List<Fieldmatrix> list){
this.fieldName = fieldName;
this.mandatory = mandatory;
this.fieldtype = fieldtype;
this.list = list;
}
//Getters and Setters
此程序仅适用于“1维”列表,这意味着如果任何字段在其自己的列表中没有字段。
我想更新此代码。 现在我有这样的结构:
子字段1和子字段2位于字段3的列表中。子字段1位于子字段2中。
我应该如何更改代码,以便更多维度示例?
有人有想法吗?