gpt4 book ai didi

java - 使用比较器进行自定义比较

转载 作者:行者123 更新时间:2023-12-01 07:28:31 24 4
gpt4 key购买 nike

我有一个变量,可以采用三个可能的值(或状态):可用、部分、不可用

现在,我有了这些状态的列表。我的工作是将整个结果总结为一种状态。我的意思是,即使列表中的状态之一是不可用,那么整体状态也会变为不可用

如果列表中的所有状态均为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操作的话值得注意的是这是O(n)对于List但只有O(1)对于Set所以更干净的方法是:

public String getStatus(final Collection<String> in) {
final Set<String> set = new HashSet<>(in);
if (set.contains("Not Available")) {
return "Not Available";
}
if (set.contains("Partial")) {
return "Partial";
}
return "Available";
}

我更喜欢我的enum然而,基于方法,因为这是通往 if 暴政的快速之路s。

关于java - 使用比较器进行自定义比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20561966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com