【发布时间】:2013-08-15 13:36:03
【问题描述】:
我有一个带有以下字符串的数组列表。
周二、周四、周一、周六。
而且我希望看起来像这样排序:
周一、周二、周四、周六。
有可能出现在星期日、星期三..
我有一个带有以下字符串的数组列表。
狗、兔子、牛、鸭、猫。
而且我希望看起来像这样排序:
兔子、猫、牛、鸭、狗。
有可能吗?谢谢。
【问题讨论】:
我有一个带有以下字符串的数组列表。
周二、周四、周一、周六。
而且我希望看起来像这样排序:
周一、周二、周四、周六。
有可能出现在星期日、星期三..
我有一个带有以下字符串的数组列表。
狗、兔子、牛、鸭、猫。
而且我希望看起来像这样排序:
兔子、猫、牛、鸭、狗。
有可能吗?谢谢。
【问题讨论】:
是的,您应该为每个人创建一个Comparator。 Docs
public final class MyComparator implements Comparator<String>
{
@Override
public int compare(String a, String b)
{
//Return +1 if a>b, -1 if a<b, 0 if equal
}
}
对于您一周中的日子,您可能希望让您的比较器与此类似;
public final class MyComparator implements Comparator<String>
{
private String[] items ={
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday"
};
@Override
public int compare(String a, String b)
{
int ai = items.length, bi=items.length;
for(int i = 0; i<items.length; i++)
{
if(items[i].equalsIgnoreCase(a))
ai=i;
if(items[i].equalsIgnoreCase(b))
bi=i;
}
return ai-bi;
}
}
然后根据您的自定义顺序对您的数组列表进行排序;
MyComparator myComparator = new MyComparator();
Collections.sort(myArrayList, myComparator);
如果您需要该类型的默认排序(如果它实现了可比较),则可以在没有第二个参数的情况下调用 Collections.sort()。 Docs
【讨论】:
compare 方法中定义a 是否小于b 的比较。我提供了一个可能的实现示例。