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

时间:2017-02-24 18:23:32

标签: java sorting comparator

当我尝试在向其添加新元素之后对其中的一些元素开始的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());
      }       
    };
  }

以下三张图片应该有希望说明我遇到的问题。

在添加任何元素之前:

Before any elements added:

添加1个元素后:

After one element added:

添加三个元素后:

After adding three elements:

如您所见,添加的元素按字母顺序相互排序,但不与列表中已有的元素排序。是否有任何方法可以使所有元素按字母顺序排序,而不是像两个独立的排序数组一样放在一起?

1 个答案:

答案 0 :(得分:1)

您可以区分区分大小写的字符串。

而不是a.compareTo(b)做:

String.CASE_INSENSITIVE_ORDER.compare(a, b)