具有复杂枚举的优先级队列?
我正在用Java编写一个代理程序,它从程序中的各种其他对象接收对其服务的请求。限制是一次只能完成一个进程,这意味着PriorityQueue可能是表示其服务请求的最佳方式。
不幸的是,这些进程存储为具有许多不同状态的枚举。是否有一种简单的方法来编写比较器以我想要的方式订购这些状态?那是,
public enum AgentProcess
{
ACTION1, ACTION2, ACTION3, ACTION4, ACTION20
}
与一些比较者
public class ProcessComparator<Process>
{
public int compare(Process a, Process b)
{
//some arbitrary ordering of the processes, e.g., ACTION3 > ACTION19 > ACTION4...
}
}
我现在坚持做类似的事情
public static int getValue(Process p)
{
switch(p)
case ACTION1:
return 5;
case ACTION2:
return 29;
case ACTION3:
return 18;
//etc
}
有没有办法我可以重写我的枚举,以便它自然有序,而不必为每个定义权重或开关?
没有找到相关结果
已邀请:
3 个回复
耐钨徒
壤欠攻混
类的高度推荐(至少是我)的Guava库中非常容易:
非常好,恕我直言。
犀寺扦
整洁,我从没想过我会看到用任何语言附加在枚举上的浮子。 :)