2017-09-02 82 views
0

我有我的類對象(EmployerDetails)的列表。僱主詳細信息由4個參數組成。列表可能包含具有不同參數的所有對象,或者參數可能與該列表中的多個對象相同。 我的班級是這樣的:對象列表中包含4個屬性的對象列表中的一個匹配值

public class EmployerDetails { 

    private String employerId; 
    private String occupationCode; 
    private String SchemeCategory; 
    private String switchingFlag; 
} 

我已經使用ArrayList中檢索對象。

假設我有10僱主對象與數據集像這樣的列表:

僱主編號在所有10個對象相同。

OccupationCode在4個對象中是相同的,在5個對象中是不同的,在一個對象中是null。

SchemeCategory在9對象中不同,在一個對象中爲null。

switchingFlag可能是Y或N.

現在我的問題是,我有一個occupationCode和一個schemeCategory我,我要找回滿足我的條件的對象和條件是:具有相同employerId的記錄(以上示例爲10),我必須檢索與我的職業代碼相匹配的記錄,並且應該只有一個匹配。例如,如果我的OccupationCode與4個對象相匹配,我將跳過這個條件並繼續條件2,即:我將檢索occupCode不爲null並且schemeCategory匹配我的schemeCategory的記錄。又是第三個條件。

目前,我正在迭代使用每個循環的列表,條件1中,如果對象的occupCode與我的OccupationCode匹配,它將在條件內進入。在上面的例子中,它會進行4次,但迭代時只有在有一個匹配時才需要檢索記錄。

我可以使用計數器並將對象放在HashMap中,並在for循環完成後,如果計數== 1,檢索對象,但問題在這裏,我有這樣的4個條件,我必須爲所有條件編寫for循環和迭代後,如果沒有結果,那麼我必須迭代條件2等等。

有沒有解決這個問題的方法?我正在使用Java 7並且不能使用Java 8.

謝謝。

+1

*有沒有解決這個問題的方法?*是的,可能有。你真正的問題是什麼? –

+0

這樣做的最短途徑是什麼?按照我的邏輯,我必須爲所有條件使用for循環。 –

+0

如果這是您的問題,則無法避免循環。您如何在codereview.stackexchange.com上發佈您的代碼,而不是要求我們爲您提供代碼? –

回答

0

我能想到的2個解決方案 假設你有這些信息匹配employerId,occupationCode,SchemeCategory和switchingFlag - >

解決方法1: 形成以連接所有這4個值的字符串 - 讓叫它expectedAggregateString。在EmployerDetails類中添加這個方法

private String getAggregatedStringVal() { 
     StringBuilder str = new StringBuilder(employerId); 
     str.append(occupationCode); 
     str.append(SchemeCategory); 
     str.append(switchingFlag); 
     return str.toString(); 
    } 

在單環 - 迭代通過列表,並與每個循環對象的getAggregatedStringVal方法的比較expectedAggregateString。 第一場比賽 - 打破循環。

解決方案2: 而是字符串,創建一個預期EmployerDetails對象,因爲按照我的假設您對EmployerDetails OBJ所需的所有4個值。 在EmployerDetails類中生成equals()和hashcode()方法,並在單個循環中將每個循環中的對象與預期的EmployerDetails對象進行比較。第一場比賽 - 打破循環。

+0

我的要求是,我必須匹配職業代碼與職業代碼列表對象,如果沒有匹配或多個匹配,那麼我必須檢查第二個條件,如果沒有匹配,那麼我必須檢查第三個條件,依此類推。我認爲這不可能與所提供的解決方案。請參閱代碼:https://codereview.stackexchange.com/questions/174647/exact-one-matching-value-in-list-of-object-where-object-consist-4-properties –

+0

您提供的解決方案將如果只有一個條件就工作,但我必須檢查3個以上的條件,並且只能檢查該順序。 –

相關問題