java - 是否可以在不使用比较器接口(interface)的情况下对数组列表/哈希集进行排序?

标签 java sorting comparator

基本上想将 Stations 类型的对象(站名的字符串表示)存储为数组中的字母顺序。但是我无法修改站类以使其具有可比性,因为它已为我预定义。是否有任何其他方法可以将类型站点的数组列表按字母顺序排序,而无需实现比较器接口(interface)或使用 collections.sort()

最佳答案

由于最初的问题是基于误解,这里是解决方案,确实使用Comparator 接口(interface)和Collections.sort,但它不会修改原来的 Station 类。首先,我们有我们无法修改的 Station 类。

public final class Station {
  private final String name;
  public String getName() { return name; }
}

在我们自己的代码中,我们可以定义一个新类:

public class StationByNameComparator implements Comparator<Station> {
  @Override
  public int compare(Station left, Station right) {
    String leftName = left.getName();
    String rightName = right.getName();
    return leftName.compareTo(rightName);
  }
}

Station 类可以保留原样。现在我们可以使用 Collections.sort 对站点进行排序:

List<Station> stations = /* ... */;
Collections.sort(stations, new StationByNameComparator());

关于java - 是否可以在不使用比较器接口(interface)的情况下对数组列表/哈希集进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23932811/

相关文章:

java - 比较器排序

java 将 GB、Mb、KB 和字节精确转换为 double

java - 静态字段的 JUnit 初始化

javascript - Jquery在自动完成中实现这种排序方法

sorting - unix sort -n -t","给出意外结果

vb.net - 按类值对 VB.net 列表进行排序

java - 显示指定文件夹中的视频列表

java - 如何在服务器上编译我的服务器代码?

java - 根据条件比较数组列表中的对象字段值,如果条件为真则删除

java - 返回列表的索引,同时更新 Comparator 比较函数的计数