java对一组数据的不同排序方法

标签 java sorting

假设我正在将 n 个字符串收集到一个数组、数组列表或其他一些数据结构中。我想提出一个设计,允许用户指定字符串的排序方式:

- 如果用户指定选项A,那么Strings将被放入一个Vector中,然后排序并打印。

-如果用户指定选项B,则将Strings放入一个List中,然后排序打印。

我希望我的设计足够灵活,以便我可以在将来轻松添加其他排序方法(以及我的排序方法)。

我目前的实现涉及将用户的字符串收集到一个 ArrayList 中,然后根据指定的排序方法,我将使用 Collections.copy(array, vector) 或 Collections.copy(array, list)。然后,我将执行 Collections.sort(vector or list)。

(目前,我在 Collections.copy 上收到 NullPointerExceptions)...

我不确定我是否以最佳、最可重用的方式进行处理。有什么想法吗?

谢谢!

最佳答案

你需要使用Java提供的接口(interface)。当你接受一个 ArrayList 时,你是在将一个实现强加给用户。收一个Collection<String>他们可以使用任何他们想要的东西。

如果你想强制它们进入 List 实现,你只需指定 List<String>作为参数。然后他们可以使用 Vector、ArrayList、LinkedList 等。

为了实现排序,您只需传入一个 Comparator。并调用Collections.sort(myList, myComparator);

所以你最终会得到类似...

public List<String> sortThem(List<String> strings, Comparator<String> comp) {
    ... do cool things ...

    Collections.sort(strings, comp);

    return strings;
}

关于java对一组数据的不同排序方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1877693/

相关文章:

java - 快速排序整数数组的数组

java - 为什么合并排序用于 Android/Java API 中的对象?

java - 使用 Java-8 时可变参数中的 ClassCastException

Java BST 递归

java - Hibernate 中稍微复杂的 ManyToMany 关系

java - Android 应用程序出现 BlueMix 服务错误 - 'Unknown pattern character ' X''

sorting - 使用 CUDA Thrust 同时对多个数组进行排序

mongodb - 在 Mongodb 中,我如何首先按分数排序,如果有 "tie"则按时间排序?

Perl:文件输入到排序的文件

Java内存泄漏理解