如何按字母顺序对由其中一个字段组成的自定义类对象进行排序

时间:2014-01-15 13:27:30

标签: java

我有自定义类的treeset,它由字符串及其名称组成,我希望按字母顺序排序,另一个树集。我想对这个课程进行排序,但我不知道如何。我试过这样的事,但我不知道,我应该写什么代替“???”。或者也许它应该完全不同?

public class Turniej 
{
Set<Zawody>zaw = new TreeSet<Zawody>
(
new Comparator<Zawody>()
{
    public int compare(Zawody z1, Zawody z2)
    {
      ???
    }
}
)
;      
....
}

public class Zawody 
{
String nazwaZawodow;
SortedSet<Start> start = new TreeSet<Start>
...
}

3 个答案:

答案 0 :(得分:0)

这样做

public int compare(Zawody s1, Zawody s2)
{
   return s1.getNazwaZawodow().compareToIgnoreCase(s1.getNazwaZawodow());
}

答案 1 :(得分:0)

请参阅Comparable接口的javadoc:如果s1等于,大于或小于s2

,则方法返回0,1(> 0), - 1(&lt; 0)

答案 2 :(得分:0)

public int compare(Zawody s1, Zawody s2)
{
  int comp = s1.getField().compareTo(s2.getField()); // String or other comparible
  if (comp == 0) {
      comp = Integer.compare(s2.getField2(), s1.getField2()); // Integer primitives
  }
  return comp;
}

如果comp == 0,你可以保持比较嵌套,只要你愿意按照你喜欢的字段排序。

要比较整数,只需使用Integer类中的静态方法即可。您可以否定结果或将值放入方法中,无论您是以升序还是降序排序。

要比较Comparable s(字符串为Comparable),请使用compareTo。要反转排序顺序,只需取消结果或反过来放置排序值。

请注意,如果getField()返回null,则需要逻辑来处理该情况,否则将抛出空指针异常。