'自然排序的含义'及其与compareTo()方法的关系

时间:2016-11-15 18:55:22

标签: java arrays methods interface implementation

在回顾Java中的数组主题时,我在Arrays包的java.util类中遇到了以下方法。

void sort(type[] array)

此外,我偶然发现了一些事情,我觉得有更多的解释。

  

该方法根据数组对数组中的元素进行排序   自然排序

我试着总结一下我对此的怀疑:

  • 自然排序的确切含义是什么?

  • 原语和引用类型的自然排序是否有所不同,如果有,如何?

  • 最后,compareTo()界面的Comparable<T>方法如何定义和/或覆盖自然排序

2 个答案:

答案 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自然从最低到最高值排序。

  

`原语和引用类型的自然排序是否有所不同,如果是这样的话?

从技术上讲,没有。原语(Integerdouble的自然顺序与其包装类(booleanDouble)的顺序相同。

  

Boolean接口的compareTo()方法如何定义和/或覆盖自然排序?

Comparable定义了类的自然顺序,这就是Javadoc解释的原因,&#34;数组中的所有元素都必须实现Comparable接口。&#34;

作为旁注,通过在执行排序的情况下定义compareTo来覆盖自然排序。例如,您可以使用ComparatorString[]进行排序(在这种情况下,通用Arrays.sort(T[], Comparator<? super T>)将成为T