直接操作数据是不好的做法,如:
Sorter.mergeSort(testData); //(testData is now sorted)
Run Code Online (Sandbox Code Playgroud)
或者我应该创建数据的副本,然后操纵并返回,如:
sortedData = Sorter.mergeSort(testData); // (sortedData is now sorted and testData remains unsorted)?
Run Code Online (Sandbox Code Playgroud)
我有几种排序方法,我希望它们在操作数据的方式上保持一致.使用我的insertSort方法,我可以直接处理未排序的数据.但是,如果我想保持未分类的数据不变,那么我将不得不在insertionSort方法中创建未排序数据的副本并操纵并返回它(这似乎是不必要的).另一方面,在我的mergeSort方法中,我需要以这样或那样的方式创建未排序数据的副本,所以我最终做了一些似乎相当不必要的事情,作为返回新的sortedList的工作:
List <Comparable> sorted = mergeSortHelper(target);
target.clear();
target.addAll(sorted);`
Run Code Online (Sandbox Code Playgroud)
请让我知道哪个是更好的做法,谢谢!
这取决于您是在优化性能还是功能纯度.通常在Java中不强调功能纯度,例如Collections.Sort对您给出的列表进行排序(即使它是通过首先进行数组复制来实现的).
我会在这里优化性能,因为它看起来更像典型的Java,任何想要的人都可以随时复制集合,比如 Sorter.mergeSort(new ArrayList(testData));
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |