在一组数据上使用Java不同的排序方法

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

-如果用户指定选项A,则字符串将被放入Vector,然后进行排序和打印.

-如果用户指定选项B,则字符串将被放入列表中,然后进行排序和打印.

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

我当前的实现包括将用户的字符串收集到ArrayList中,然后根据指定的排序方法,我将使用Collections.copy(array,vector)或Collections.copy(array,list).然后,我将执行Collections.sort(向量或列表).

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

我不确定是否要以最佳,最可重用的方式进行操作.有什么想法吗?

谢谢!

解决方法:

您需要使用Java提供的接口.当您使用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;
}
上一篇:PHP-为什么natsort(或natcasesort)在这里不起作用?


下一篇:javascript-对列表项进行向上或向下排序