我有一个变量可以采用三种可能的值(或状态):Available, Partial, Not Available
。使用比较器进行自定义比较
现在,我列出了这些状态。我的工作是将整个结果汇总到一个状态。我的意思是,即使列表中的某个状态为Not Available
,那么总体状态也会变为Not Available
。
如果列表中的所有状态都是Available
,而一个是Partial
,那么总体状态为Partial
。
目前,我正在使用一种非常天真的方法,其中我有一个值对应于每种可能的状态,然后我逐一比较它们。
public class StringsInCusomOrder {
public static String overallStatus(ArrayList<String> statusList) throws Exception
{
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("Available", 0);
map.put("Partial", 1);
map.put("Not Available", 2);
String overallstatus = "Available";
int value = 0;
for(String s : statusList)
{
if(map.get(s) > value)
{
overallstatus = s;
value = map.get(s);
}
}
return overallstatus;
}
public static void main(String[] args) throws Exception {
ArrayList<String> statusList = new ArrayList<String>();
statusList.add("Available");
statusList.add("Partial");
statusList.add("Not Available");
statusList.add("Partial");
System.out.println(overallStatus(statusList));
}
}
我想知道是否有更好的方法来做到这一点?我可以使用比较器来执行此自定义比较吗?
你不能只使用'contains'方法吗? –
由于您的代码正在工作,如果您想讨论更好的方法,您可能需要在http://codereview.stackexchange.com/上发帖。 –
你也可以考虑使用'enum'而不是'String'。 –