在回顾Java中的数组主题时,我在Arrays
包的java.util
类中遇到了以下方法。
void sort(type[] array)
此外,我偶然发现了一些事情,我觉得有更多的解释。
该方法根据数组对数组中的元素进行排序 自然排序。
我试着总结一下我对此的怀疑:
自然排序的确切含义是什么?
原语和引用类型的自然排序是否有所不同,如果有,如何?
最后,compareTo()
界面的Comparable<T>
方法如何定义和/或覆盖自然排序?
答案 0 :(得分:3)
由于compareTo(T o)
的实施,我们在对compareTo
扩展var arr = [];
var x = [];
var y;
for(var i=0; i<4; i++) {
arr[i] = 5 * (i+1);
}
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var centerX = 0;
var centerY = 90;
var radius = 70;
var temp;
var xar = [];
for(var i=0; i<4; i++) {
centerX = centerX + 100;
context.beginPath();
context.arc(centerX, centerY, 50, 0, 2 * Math.PI, false);
context.fillStyle = 'green';
context.fill();
context.lineWidth = 5;
context.strokeStyle = '#003300';
context.stroke();
context.fillStyle="black";
context.fillText(arr[i], centerX, centerY);
}
function go() {
for(i=0; i<4; i++) {
temp = parseInt(document.getElementById("one"+i).value);
xar.push(temp);
}
console.log(xar);
var xnext = 0;
for(var i=0; i<4; i++) {
xnext = xnext + 100;
context.beginPath();
context.arc(xnext, 190, 50, 0, 2 * Math.PI, false);
context.fillStyle = 'green';
context.fill();
context.lineWidth = 5;
context.strokeStyle = '#003300';
context.stroke();
context.fillStyle="black";
context.fillText(xar[i], xnext, 190);
if(xar[i]==arr[i])
context.arc(xnext, 190, 50, 0, 2 * Math.PI, false);
}
}
的类的实例进行排序时讨论自然排序。
检查Comparable
的javadoc:
此接口对每个类的对象施加总排序 实现它。这种排序称为类 自然排序,类的
<input id="one0" type="text" style="width:100px;height:30px;"> <input id="one1" type="text" style="width:100px;height:30px;"> <input id="one2" type="text" style="width:100px;height:30px;"> <input id="one3" type="text" style="width:100px;height:30px;"> <input id="result" value="click here" type="button" style="width:70px;" onclick="go()"> <canvas id="myCanvas" width="800" height="500"></canvas>
方法称为自然比较方法。
答案 1 :(得分:1)
正是自然顺序意味着什么?
自然排序是由compareTo
的{{1}}定义的排序。例如,Comparable
s自然从最低到最高值排序。
`原语和引用类型的自然排序是否有所不同,如果是这样的话?
从技术上讲,没有。原语(Integer
,double
的自然顺序与其包装类(boolean
,Double
)的顺序相同。
Boolean
接口的compareTo()
方法如何定义和/或覆盖自然排序?
Comparable
定义了类的自然顺序,这就是Javadoc解释的原因,&#34;数组中的所有元素都必须实现Comparable接口。&#34;
作为旁注,通过在执行排序的情况下定义compareTo
来覆盖自然排序。例如,您可以使用Comparator
对String[]
进行排序(在这种情况下,通用Arrays.sort(T[], Comparator<? super T>)
将成为T
。