【问题标题】:How to pass a sorting method as parameter in java [closed]如何在java中将排序方法作为参数传递[关闭]
【发布时间】:2021-08-23 20:55:47
【问题描述】:

我有一个包含ArrayList<Task> tasksTask 类。 我想做的是创建一个排序方法,让用户选择如何对这个 ArrayList 任务进行排序。 必须是main 中的用户调用该方法以将排序方法作为参数传递,然后将在Task 类中完成。 我该怎么做?

【问题讨论】:

  • 请添加您的方法以及您在哪里遇到问题
  • 我认为已经有方法了。在 Lists 中有 sort 方法,它接受 Comparator 作为参数。

标签: java list sorting arraylist


【解决方案1】:

您应该通过引入如下方法来使用 Comparator 接口:

void sort(List<Task> tasks, Comparator<Task> comparator) {
   tasks.sort(comparator);
}

上述方法根据Task类的任务id字段对列表进行排序的示例用法:

sort(tasks, Comparator.comparing(task -> task.getTaskId())

请注意,排序方法是无效的,这意味着它会改变原始任务列表。 如果您必须保持原始列表不变,那么排序的实现应该如下:

List<Task> sort(List<Task> tasks, Comparator<Task> comparator) {
   return tasks.stream().sorted(comparator).collect(Collectors.toList());
}

【讨论】:

  • 谢谢。如果我必须在 ArryaList 所在的不同类中初始化我的排序方法,这可能吗?
  • 是的,完全没问题。该实现并不意味着对定义排序方法的位置有任何限制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
相关资源
最近更新 更多