ListView 对添加的成员进行排序,就好像它们是原始列表之后的另一个排序列表一样

ListView sorts added members as if they were another sorted list that comes after the original list

在向其中添加新元素后尝试对以某些元素开头的 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个元素后:

添加三个元素后:

如您所见,添加的元素彼此按字母顺序排序,但不与列表中已有的元素排序。有没有什么办法可以让所有元素按字母顺序排序,而不是像两个单独的排序数组并排放置一样?

您按区分大小写的顺序比较字符串。

代替a.compareTo(b)做:

String.CASE_INSENSITIVE_ORDER.compare(a, b)