【淄博溯源码】【tgp源码】【电量 源码】comparable源码

时间:2024-11-23 11:39:01 编辑:基本面综合曲线指标源码 来源:网上商城源码下载

1.Comparable 接口(String 类的源码 compareTo详解)
2.Comparable和Comparator的区别

comparable源码

Comparable 接口(String 类的 compareTo详解)

       理解 String 类的 compareTo 方法,对于深入掌握字符串排序至关重要。源码通过使用 Arrays.sort 方法对字符串数组排序,源码实际上就是源码淄博溯源码依赖了 String 类实现了 Comparable 接口。通过该接口,源码字符串能以字典顺序进行比较,源码即基于 Unicode 编码大小排序。源码

       具体而言,源码当调用字符串数组的源码排序方法时,底层调用的源码是 Arrays.sort 方法。而此方法内部,源码tgp源码会遍历数组中的源码每一个字符串对象,并通过 compareTo 方法进行两两比较。源码通过比较字符串的源码 Unicode 编码值,决定元素间的源码相对顺序。

       学习本知识点的电量 源码目标有两个:一是理解算法思想,二是提升英文阅读能力。通过实际案例,如 String 类的排序,可以直观感受接口与实现之间的关联,加深对面向对象编程的ibands 源码理解。

       探索源码是一个加深理解的好方法,它能帮助你从实践到理论,再从理论到实践,形成良性循环。源码的家园源码分析适合在熟悉代码使用场景后进行,先实践再深入分析底层实现,这样既能避免理论与实践脱节,也能提高学习效率。

       在学习过程中,我倾向于使用电子书作为辅助材料。这些资源能够提供系统化的学习路径,帮助我初步了解框架、技术或概念。通常,我会快速浏览目录和前几章内容,以获得整体框架的认识。深入研究则会在实际项目中进行,这样能确保知识与实践紧密结合,提高应用能力。

Comparable和Comparator的区别

       comparator接口与Comparable接口的区别

       1. Comparator 和 Comparable 相同的地方

       ä»–们都是java的一个接口, 并且是用来对自定义的class比较大小的,

       ä»€ä¹ˆæ˜¯è‡ªå®šä¹‰class: 如 public class Person{ String name; int age }.

       å½“我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Collections.sort( personList ), 是得不到预期的结果的. 这时肯定有人要问, 那为什么可以排序一个字符串list呢:

       å¦‚ StringList{ "hello1" , "hello3" , "hello2"}, Collections.sort( stringList ) 能够得到正确的排序, 那是因为 String 这个对象已经帮我们实现了 Comparable接口 , 所以我们的 Person 如果想排序, 也要实现一个比较器。

       2. Comparator 和 Comparable 的区别

       Comparable

       Comparable 定义在 Person类的内部:

       public class Persion implements Comparable { ..比较Person的大小..},

        因为已经实现了比较器,那么我们的Person现在是一个可以比较大小的对象了,它的比较功能和String完全一样,可以随时随地的拿来比较大小,因为Person现在自身就是有大小之分的。Collections.sort(personList)可以得到正确的结果。

       Comparator

       Comparator 是定义在Person的外部的, 此时我们的Person类的结构不需要有任何变化,如

       public class Person{ String name; int age },

       ç„¶åŽæˆ‘们另外定义一个比较器:

       public PersonComparator implements Comparator() { ..比较Person的大小..},

       åœ¨PersonComparator里面实现了怎么比较两个Person的大小. 所以,用这种方法,当我们要对一个 personList进行排序的时候, 我们除了了要传递personList过去, 还需要把PersonComparator传递过去,因为怎么比较Person的大小是在PersonComparator里面实现的, 如:

       Collections.sort( personList , new PersonComparator() ).

       3. Comparator 和 Comparable 的实例

       Comparable:

       å®žçŽ°Comparable接口要覆盖compareTo方法, 在compareTo方法里面实现比较:

       public class Person implements Comparable {

        String name;

        int age

        public int compareTo(Person another) {

        int i = 0;

        i = name.compareTo(another.name); // 使用字符串的比较

        if(i == 0) { // 如果名字一样,比较年龄, 返回比较年龄结果

        return age - another.age;

        } else {

        return i; // 名字不一样, 返回比较名字的结果.

        }

        }

       }

        这时我们可以直接用 Collections.sort( personList ) 对其排序了.

       Comparator:

       å®žçŽ°Comparator需要覆盖 compare 方法:

       public class Person{

        String name;

        int age

       }

       class PersonComparator implements Comparator {

        public int compare(Person one, Person another) {

        int i = 0;

        i = one.name.compareTo(another.name); // 使用字符串的比较

        if(i == 0) { // 如果名字一样,比较年龄,返回比较年龄结果

        return one.age - another.age;

        } else {

        return i; // 名字不一样, 返回比较名字的结果.

        }

        }

       }

        Collections.sort( personList , new PersonComparator()) 可以对其排序

        4:总结

       ä¸¤ç§æ–¹æ³•å„有优劣, 用Comparable 简单, 只要实现Comparable 接口的对象直接就成为一个可以比较的对象,但是需要修改源代码, 用Comparator 的好处是不需要修改源代码, 而是另外实现一个比较器, 当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了, 并且在Comparator 里面用户可以自己实现复杂的可以通用的逻辑,使其可以匹配一些比较简单的对象,那样就可以节省很多重复劳动了。