java ListView对添加的成员进行排序,就像它们是原始列表之后的另一个排序列表一样
在向JavaFXListView对象添加新元素后,尝试对其中以某些元素开头的JavaFXListView对象进行排序时,会出现一些奇怪的行为。 用于排序的代码是
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个元素后:
在添加三个元素之后:
如您所见,添加的元素是按字母顺序相互排序的,而不是按列表中已有的元素排序的。有没有办法让所有元素都按字母顺序排序,而不是像两个相邻的单独排序数组一样
# 1 楼答案
您可以按区分大小写的顺序比较字符串
代替
a.compareTo(b)
做: