2014-02-08 19 views
1

我有以下問題:如何才能得到兩種不同類型的列表過濾器回收

我想基於一些條件來驗證我的數據,我的數據是一家集List<ClassA> 在驗證我想篩選我List<ClassA>,以便最終得到 List<ClassA>,其中只包含有效數據,而List<ClassB>由無效數據組成。

我目前只有兩個想法如何做到這一點,但我不喜歡他們。

  1. 我創建具有List<ClassA>List<ClassB>,我和我的Validator類的validate方法返回ClassC

    List<ClassC> validate(List<ClassA>) 
    

    這個appraoch的問題是,ClassA的是請求對象和ClassB是響應對象等等把它們放到Class上看起來有些奇怪。

  2. 我的驗證器類hava有效的方法,但不返回任何東西。相反,它還有兩個方法,getValidData和getInvalidData其返回List<ClassA>List<ClassB>據此認爲,與validate方法運行中創建

    void validate(List<ClassA>) 
    List<ClassA> getValidData() 
    List<ClassB> getInvalidData() 
    

    我喜歡一個人好,但我仍需要方法按順序運行不開心。

任何想法如何更好地處理這樣的問題?

回答

1

如果你總是需要驗證列表,你可以事先做,只露出getValidgetInvalid方法:

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; } 
} 
+0

感謝assylias。看起來更清潔,將這樣做。 – user3225361

相關問題