Cro*_*ode 0 java compare comparable comparator
这是我写的比较器,用于根据成本对节点进行排序.
public class MyCostComparator implements Comparator<Node>{
public int compare(Node a, Node b){
if(a.pathCost > b.pathCost)
return 1;
else
return -1;
}
}
Run Code Online (Sandbox Code Playgroud)
我发现它的行为在我的机器(Java 1.7)和Uni的服务器(Java 1.5)上是不同的.但是,当我做到它:
if(a.pathCost >= b.pathCost)
,它似乎在1.5上工作正常,但1.7的另一种方式.
另外,当值相等时,NOT返回零的缺点是什么?
该"缺点"是TreeSet
,TreeMap
和基本上都是基于比较的数据结构不会在所有的工作.一点儿都没有.具体而言,TreeSet.contains
将始终返回false
,并且TreeMap.get
将始终返回null.
如果你永远不会返回零,那么一个对象将看起来不等于它自己.这违反了合同Comparable
并阻止任何依赖它的集合正常(或根本)正常工作.
Java 7还引入了一种新的排序算法,如果它检测到合同被违反Collections.sort
,它将抛出.这是对早期版本的更改,它默默地忽略了这一事实.IllegalArgumentException
Comparable
归档时间: |
|
查看次数: |
213 次 |
最近记录: |