当我尝试在向其添加新元素之后对其中的一些元素开始的javafx ListView对象进行排序时,我得到了一些奇怪的行为。 用于排序的代码是
movieList.getItems().add(newMovie);
if(mainController.getListingOrder().equals("title"))
{
movieList.getItems().sort(Movie.getTitleComparator());
}
else
{
movieList.getItems().sort(Movie.getYearComparator());
}
getTitleComparator()方法如下
public static Comparator<Movie> getTitleComparator()
{
return new Comparator<Movie>()
{
@Override
public int compare(Movie movie1, Movie movie2)
{
return movie1.getTitle().compareTo(movie2.getTitle());
}
};
}
以下三张图片应该有希望说明我遇到的问题。
在添加任何元素之前:
添加1个元素后:
添加三个元素后:
如您所见,添加的元素按字母顺序相互排序,但不与列表中已有的元素排序。是否有任何方法可以使所有元素按字母顺序排序,而不是像两个独立的排序数组一样放在一起?
答案 0 :(得分:1)
您可以区分区分大小写的字符串。
而不是a.compareTo(b)
做:
String.CASE_INSENSITIVE_ORDER.compare(a, b)