У меня есть переменная, которая может принимать три возможных значения (или статус): 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'. –