我有一個變量可以採用三種可能的值(或狀態):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'。 –