【发布时间】:2013-02-16 18:45:07
【问题描述】:
我试图为以下场景找到更好和优化的解决方案
我有一个数组列表
ArrayList<Order> orders = new ArrayList<Order>();
排序后的结果值如下
{
medicine,
medicine,
milk,
milk,
pillow,
Soap,
toy
}
我对所有这些项目都有一个枚举
public Enum Items{
PILLOW("pillow"),
HARDDISK("harddisk"),
MILK("milk"),
SOAP("soap"),
MEDICINE("medicine"),
TOY("toy")
}
我的输出顺序应该如下
{
milk,
milk,
harddisk,
medicine,
medicine,
toy,
soap,
pillow
}
为了完成这一切,我想做的就是
ArrayList<Order> resultList = new ArrayList<Order>();
for(Order order: orders){
if(order.getItemName.equals(Items.MILK){
resultList.add(order);
}
for(Order order: orders){
if(order.getItemName.equals(Items.MEDICINE){
resultList.add(order);
}
.......
for(Order order: orders){
if(order.getItemName.equals(Items.PILLOW){
resultList.add(order);
}
如果我遵循上述方法,我能够以上述指定顺序获得输出顺序,但我担心的是因为我在这里循环了许多 for 循环,我想要优化方法的建议。
输出应按以下顺序排序
1) 牛奶 2) 硬盘 3) 医学 4) 玩具 5) 肥皂 6) 枕头
【问题讨论】:
-
你为什么会期待这个输出?这不是自然排序。您要在什么基础上进行排序?
-
这个答案解决了带有自定义比较器的枚举:stackoverflow.com/a/519844/1598965