其实不是一定要返回1,0,-1,只是代表比较两笔数据大于,等于,小于而已,换成其它正负和0(相等)也可以,后文就用1,0,-1代表。
返回1
我们都知道Comparator有两个参数,代表两笔先后数据,那么比较两笔数据,前一笔减去后一笔,返回1,此时代表交换顺序,如果两个元素相同返回1,则顺序不会交换,如果不进行比较,直接返回1,会原封不动输出。
返回-1
如上所述,如果返回-1,代表不交换顺序,如果两个元素相同返回-1,则交换顺序,如果不进行比较,直接返回-1,会倒序输出。
返回0
返回0代表不交换顺序。如果直接返回0,会原封不动输出。
注意
这时大家可能会有疑问,貌似返回0和-1没区别呀?其实不然,返回0代表真正意义的两个元素相同,如果你正在用map,自定义比较器,是用key做对比的,返回0代表元素相同,此时就会覆盖掉,导致数据丢失,此时应该用-1,另外,如果比较器中只返回1和0,那和上面一样,会原封不动。
网友评论