1.Comparable 接口(String 类的 compareTo详解)
2.还是搞不明白compareTo()方法
Comparable 接口(String 类的 compareTo详解)
理解 String 类的 compareTo 方法,对于深入掌握字符串排序至关重要。通过使用 Arrays.sort 方法对字符串数组排序,实际上就是依赖了 String 类实现了 Comparable 接口。通过该接口,字符串能以字典顺序进行比较,明星投票网站源码即基于 Unicode 编码大小排序。
具体而言,当调用字符串数组的排序方法时,底层调用的是 Arrays.sort 方法。而此方法内部,会遍历数组中的每一个字符串对象,并通过 compareTo 方法进行两两比较。来钱贷源码通过比较字符串的 Unicode 编码值,决定元素间的相对顺序。
学习本知识点的目标有两个:一是理解算法思想,二是提升英文阅读能力。通过实际案例,如 String 类的源码推补码排序,可以直观感受接口与实现之间的关联,加深对面向对象编程的理解。
探索源码是一个加深理解的好方法,它能帮助你从实践到理论,再从理论到实践,形成良性循环。源码乘法时源码的分析适合在熟悉代码使用场景后进行,先实践再深入分析底层实现,这样既能避免理论与实践脱节,也能提高学习效率。
在学习过程中,我倾向于使用电子书作为辅助材料。代码的源码这些资源能够提供系统化的学习路径,帮助我初步了解框架、技术或概念。通常,我会快速浏览目录和前几章内容,以获得整体框架的认识。深入研究则会在实际项目中进行,这样能确保知识与实践紧密结合,提高应用能力。
还是搞不明白compareTo()方法
1.先回答得到的返回值是负整数、零或正整数,和排序问题怎么联系:
返回这3种值对我们来说或许没有意义,但是这3个值告诉底层如何判断2个对象的大小,至于排序,我们是通过Collections.sort和Arrays.sort进行,而这2个方法在底层实现时,使用到了object1.compareTo(object2)这种方法进行判断谁大谁小,从而调整数组,最终给你返回有序的集合.注:你可以参考源代码,所有的排序都要用到调用的是Arrays.mergeSort(Object[] src,Object[] dest,int low,int high,int off).
2.Comparable还有Comparator的使用:当你自己写类时,如果希望这个类能按照自己的意愿进行排序,你就实现Comparable接口,你就是只要告诉底层怎么判断大小(即compareTo()),然后想排序,就是用Collections.sort(List list)即可;
而Comparator的使用:强行对某个对象 collection 进行整体排序,而集合里的对象可以是没有实现Comparable接口的对象,也可以是实现了Comparable接口的对象,使用这个排序器可以改变默认的排序时使用比较大小的方法,这时候底层进行排序就不再是用默认的自然排序,在底层对集合进行排序将不再是用Arrays.mergeSort(Object[] src,Object[] dest,int low,int high,int off),而是是用Arrays.mergeSort(Object[] src,Object[] dest,int low,int high,int off,Comparator c),比较大小则是用了c.compare(dest[j-1], dest[j])。