我有自定义类的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>
...
}
答案 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,则需要逻辑来处理该情况,否则将抛出空指针异常。