2
这是PROGRAMM:算法组合
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;
}
我的想法是:比如我有这些领域
- 字段1的XML,真正
- 字段2,真正
- 字段3 ,假
- Field4,false
- Field5,false 个
的结果是:
- {字段1,字段2,字段3,字段4,字段5}
- {字段1,字段2,字段4,字段5}
- {字段1,字段2,,,字段5}
- {字段1,字段2,,,}
- {字段1,字段2,字段3,字段5}
- {字段1,字段2,字段3,,}
- {字段1,字段2,字段3,字段4,}
- {字段1,字段2,字段4,}
中的字段具有值真或假。假字段可以被删除。因此,该程序会查找这些字段的所有可能组合。
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,真
- 字段2,真
- 字段3,假
- 子字段1中,真实
- 子场2,真
- 子子域1,假
子域1和子域2是场3 Subsubfield 1的列表是在子场2
我应该如何更改代码,使更多维的例子作品?
有没有人有想法?
订单很重要。问题是我必须更新算法,以便它与每个字段的列表一起工作。 – mrfsl
我的不好,这个算法会给你相同的输出。只需要在代码中进行一些处理以适应TRUE值。你应该试试看。 –
但与algorothm我已经容纳真正的价值观,问题是我不能处理f.e. Fields3.list和Subfield2.list。 – mrfsl