假设我正在将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;
}