[英]How to filter Collection in order to get two Lists of different types
我有以下問題:
我想根據某些條件驗證我的數據,我的數據是一個List<ClassA>
的集合。驗證時,我想過濾List<ClassA>
以便最終得到僅包含有效數據和List<ClassB>
List<ClassA>
List<ClassB>
包含無效數據。
目前,我對這方面只有兩個想法,但我都不喜歡。
我創建具有List<ClassA>
和List<ClassB>
ClassC,並使用Validator類的validate方法返回
List<ClassC> validate(List<ClassA>)
這個方法的問題在於,ClassA是請求對象,ClassB是響應對象,因此將它們放到Class上看起來有些奇怪。
我的Validator類具有有效方法,但不返回任何內容。 相反,它具有另外兩個方法,getValidData和getInvalidData,它們分別返回使用validate方法運行創建的List<ClassA>
和List<ClassB>
void validate(List<ClassA>) List<ClassA> getValidData() List<ClassB> getInvalidData()
我更好地喜歡它,但是我仍然不滿意,因為方法需要按順序運行。
任何想法如何更好地處理此類問題?
如果您始終需要驗證列表,則可以事先進行操作,僅公開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; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.