簡體   English   中英

如何篩選集合以獲取兩個不同類型的列表

[英]How to filter Collection in order to get two Lists of different types

我有以下問題:

我想根據某些條件驗證我的數據,我的數據是一個List<ClassA>的集合。驗證時,我想過濾List<ClassA>以便最終得到僅包含有效數據和List<ClassB> List<ClassA> List<ClassB>包含無效數據。

目前,我對這方面只有兩個想法,但我都不喜歡。

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

     List<ClassC> validate(List<ClassA>) 

    這個方法的問題在於,ClassA是請求對象,ClassB是響應對象,因此將它們放到Class上看起來有些奇怪。

  2. 我的Validator類具有有效方法,但不返回任何內容。 相反,它具有另外兩個方法,getValidData和getInvalidData,它們分別返回使用validate方法運行創建的List<ClassA>List<ClassB>

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

    我更好地喜歡它,但是我仍然不滿意,因為方法需要按順序運行。

任何想法如何更好地處理此類問題?

如果您始終需要驗證列表,則可以事先進行操作,僅公開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; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM