2017-09-02 92 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个以上的条件,并且只能检查该顺序。 –

相关问题