- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么实现 Comparable
接口(interface)比定义我自己的 compareTo()
方法更有好处?
另一件事,java.util.Arrays.sort(Object[] o)
方法如何与 Comparable
接口(interface)相关,因此我必须实现 Comparable能够使用 Arrays.sort(Object[] o)
方法的接口(interface)?
最佳答案
Why is it beneficial to implement the Comparable interface instead of just defining my own compareTo method?
你可以定义你自己的方法,但是所有需要比较的类都必须知道它。 Comparable 在 Java api 中有用于此目的,并且所有人都知道它。 Comparable 接口(interface)是许多类的父类(super class)型,无论它们的来源如何。因此,它在所有主要框架中都很普遍。
Another thing, how does the java.util.Arrays.sort(Object[] o) method relate to the Comparable interface such that I HAVE to implement the Comparable interface to be able to use the Arrays.sort(Object[] o) method?
Arrays.sort()
方法在内部调用 Comparable
类的 compareTo()
方法来对内容进行排序。
查看Arrays.sort()
的源代码, 委托(delegate)方法使用 Comparabble#compareTo()
方法
private static void mergeSort(Object[] src,
Object[] dest,
int low,
int high,
int off) {
int length = high - low;
// Insertion sort on smallest arrays
if (length < INSERTIONSORT_THRESHOLD) {
for (int i=low; i<high; i++)
for (int j=i; j>low &&
((Comparable) dest[j-1]).compareTo(dest[j])>0; j--)
swap(dest, j, j-1);
return;
}
// Recursively sort halves of dest into src
int destLow = low;
int destHigh = high;
low += off;
high += off;
int mid = (low + high) >>> 1;
mergeSort(dest, src, low, mid, -off);
mergeSort(dest, src, mid, high, -off);
// If list is already sorted, just copy from src to dest. This is an
// optimization that results in faster sorts for nearly ordered lists.
if (((Comparable)src[mid-1]).compareTo(src[mid]) <= 0) {
System.arraycopy(src, low, dest, destLow, length);
return;
}
// Merge sorted halves (now in src) into dest
for(int i = destLow, p = low, q = mid; i < destHigh; i++) {
if (q >= high || p < mid && ((Comparable)src[p]).compareTo(src[q])<=0)
dest[i] = src[p++];
else
dest[i] = src[q++];
}
}
关于java - 可比界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22091880/
我对 Elm 进行排序时使用什么排序算法 List ? > sort [1,3,5,6] [1,3,5,6] : [comparable] 什么是 [comparable] 类型以及如何取回 numb
我必须编写一个优先队列作为以下接口(interface)的实现: public interface PQueue> { public void insert( T o ); // insert
设以下实体: @Entity public class Person { @Id long id; @ManyToOne Family fam; @ManyTo
今天在 AP 计算机科学课上,我有这段代码: Comparable x = 45; Comparable y = 56; System.out.println(x.compar
如果您知道 WPF 的 MVVM 模式,那么您就会知道 Josh smith msdn 文章,其中 CustomerViewModel 不包含如下简单属性: public string FirstNa
我是一名优秀的程序员,十分优秀!