有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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());
      }       
    };
  }

下面的三张图片应该有希望说明我的问题

在添加任何元素之前:

Before any elements added:

添加1个元素后:

After one element added:

在添加三个元素之后:

After adding three elements:

如您所见,添加的元素是按字母顺序相互排序的,而不是按列表中已有的元素排序的。有没有办法让所有元素都按字母顺序排序,而不是像两个相邻的单独排序数组一样


共 (1) 个答案

  1. # 1 楼答案

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

    代替a.compareTo(b)做:

    String.CASE_INSENSITIVE_ORDER.compare(a, b)