因此,首先,我有一个名为 news article 的对象,它具有三个需要排序的属性:
Year (int), Month (int), type (String - online, paper)
例如,它会是这样的:
- 在线 2013 4
- 在线 2013 1
- 在线 2009 11
- 在线 2008 4
- 论文 2012 12
- 论文 2011 9
发生的事情是月份和年份似乎正确排序,但我在按类型排序时遇到问题。在 compareTo 中按字符串排序的正确方法是什么?
目前结果:
- 论文 2012 12
- 论文 2011 9
- 在线 2013 4
- 在线 2013 1
- 在线 2009 11
- 在线 2008 4
这是我的方法(我很抱歉它有点古怪,我一直在尝试不同的方法来按类型排序并且正在试验):
@Override
public int compareTo(Article rs) {
Integer x = 0;
Integer year1 = 0;
Integer year2 = 0;
Integer month1 = 99999;
Integer month2 = 99999;
Integer type1 = 99999;
Integer type2 = 99999;
if(rs.year != null && year != null) {
if(!rs.year.equals(""))
year1 = Integer.parseInt(rs.year);
if(!year.equals(""))
year2 = Integer.parseInt(year);
}
if(rs.month != null && month != null) {
if(!rs.month.equals(""))
month1 = Integer.parseInt(rs.month);
if(!month.equals(""))
month2 = Integer.parseInt(month);
}
if(rs.type == null)
type1 = 99999;
else
type1 = 0;
if(type == null)
type2 = 99999;
else
type2 = 0;
x = type2.compareTo(type1);
if(x != 0) {
return x;
}
x = year1.compareTo(year2);
if(x != 0) {
return x;
}
x = month1.compareTo(month2);
if(x != 0) {
return x;
}
return x;
}