我有以下问题:
我想根据某些条件验证我的数据,我的数据是一个集合List<ClassA>
在验证时我想过滤我的List<ClassA>
,以便最终得到
List<ClassA>
仅包含有效数据,List<ClassB>
由无效数据组成。
我目前只有两个关于如何做的想法,但我不喜欢它们。
我创建了具有List<ClassA>
和List<ClassB>
的ClassC,我使用Validator类的validate方法返回
List<ClassC> validate(List<ClassA>)
这个appraoch的问题在于,ClassA是请求对象而ClassB是响应对象,因此将它们放入Class看起来有点奇怪。
我的Validator类hava有效方法但不返回任何内容。相反,它还有另外两个方法,getValidData和getInvalidData,它们相应地返回List<ClassA>
和List<ClassB>
,这些方法是使用validate方法运行创建的
void validate(List<ClassA>)
List<ClassA> getValidData()
List<ClassB> getInvalidData()
我更喜欢那个,但我仍然不满意,因为方法需要按顺序运行。
任何想法如何更好地处理这样的问题?
答案 0 :(得分:1)
如果您始终需要验证列表,则可以事先执行此操作并仅显示getValid
和getInvalid
方法:
public class Validator {
private final List<A> all;
private final List<A> invalid = new ArrayList<>();
private final List<A> valid = new ArrayList<>();
public Validator(List<A> all) {
this.all = new ArrayList<> (all);
validate(all);
}
private void validate(List<A> all) {
//populate invalid and valid
}
public List<A> getInvalid() { return invalid; }
public List<A> getValid() { return valid; }
}