何时在 Java 中使用 Comparable[ ]?
When to use Comparable[ ] in Java?
我正在监视一个代码,它使用 Comparable[]
作为一个数组,它完全用作一个集合框架 list.As 通过使用它没有太多循环,任务很容易完成,是吗将它用于其他数据类型的好习惯?
public class MergeSortExample {
public Comparable[] mergeSort(Comparable[] inputList) {
if(inputList.length <= 1) {
return inputList;
}
Comparable[] list1 = new Comparable[inputList.length/2];
Comparable[] list2 = new Comparable[inputList.length - list1.length];
System.arraycopy(inputList, 0, list1, 0, list1.length);
System.arraycopy(inputList, list1.length, list2, 0, list2.length);
mergeSort(list1);
mergeSort(list2);
merge(list1, list2, inputList);
return inputList;
}
public void merge(Comparable[] list1, Comparable[] list2, Comparable[] resultList) {
int indexOfList1 = 0;
int indexOfList2 = 0;
int indexOfMergedList = 0;
while(indexOfList1 < list1.length && indexOfList2 < list2.length) {
if(list1[indexOfList1].compareTo(list2[indexOfList2]) < 0) {
resultList[indexOfMergedList] = list1[indexOfList1];
indexOfList1++;
}else {
resultList[indexOfMergedList] = list2[indexOfList2];
indexOfList2++;
}
indexOfMergedList++;
}
System.arraycopy(list1, indexOfList1, resultList, indexOfMergedList, list1.length - indexOfList1);
System.arraycopy(list2, indexOfList2, resultList, indexOfMergedList, list2.length - indexOfList2);
}
}
在泛型之前的过去,集合只能使用 Object
并且不是类型安全的。数组一直是类型安全的。在那些日子里,出于这个原因使用数组是很常见的。在现代代码中,我通常更喜欢在通用代码中使用列表,但数组没有任何问题。集合是在内部使用数组实现的,有时数组正是您想要的。如果不查看更多您的代码,很难给出更好的答案!
我正在监视一个代码,它使用 Comparable[]
作为一个数组,它完全用作一个集合框架 list.As 通过使用它没有太多循环,任务很容易完成,是吗将它用于其他数据类型的好习惯?
public class MergeSortExample {
public Comparable[] mergeSort(Comparable[] inputList) {
if(inputList.length <= 1) {
return inputList;
}
Comparable[] list1 = new Comparable[inputList.length/2];
Comparable[] list2 = new Comparable[inputList.length - list1.length];
System.arraycopy(inputList, 0, list1, 0, list1.length);
System.arraycopy(inputList, list1.length, list2, 0, list2.length);
mergeSort(list1);
mergeSort(list2);
merge(list1, list2, inputList);
return inputList;
}
public void merge(Comparable[] list1, Comparable[] list2, Comparable[] resultList) {
int indexOfList1 = 0;
int indexOfList2 = 0;
int indexOfMergedList = 0;
while(indexOfList1 < list1.length && indexOfList2 < list2.length) {
if(list1[indexOfList1].compareTo(list2[indexOfList2]) < 0) {
resultList[indexOfMergedList] = list1[indexOfList1];
indexOfList1++;
}else {
resultList[indexOfMergedList] = list2[indexOfList2];
indexOfList2++;
}
indexOfMergedList++;
}
System.arraycopy(list1, indexOfList1, resultList, indexOfMergedList, list1.length - indexOfList1);
System.arraycopy(list2, indexOfList2, resultList, indexOfMergedList, list2.length - indexOfList2);
}
}
在泛型之前的过去,集合只能使用 Object
并且不是类型安全的。数组一直是类型安全的。在那些日子里,出于这个原因使用数组是很常见的。在现代代码中,我通常更喜欢在通用代码中使用列表,但数组没有任何问题。集合是在内部使用数组实现的,有时数组正是您想要的。如果不查看更多您的代码,很难给出更好的答案!