{"id":37418,"date":"2023-12-11T14:41:23","date_gmt":"2023-12-11T06:41:23","guid":{"rendered":"https:\/\/wx.kaifamiao.info\/?p=37418"},"modified":"2023-12-11T14:41:23","modified_gmt":"2023-12-11T06:41:23","slug":"comparable-%e5%92%8c-comparator%e7%9a%84%e5%8c%ba%e5%88%ab%ef%bc%9f","status":"publish","type":"post","link":"http:\/\/wx.kaifamiao.info\/index.php\/2023\/12\/11\/comparable-%e5%92%8c-comparator%e7%9a%84%e5%8c%ba%e5%88%ab%ef%bc%9f\/","title":{"rendered":"comparable \u548c Comparator\u7684\u533a\u522b\uff1f"},"content":{"rendered":"<p>&#8220;`&#8221;<\/p>\n<ul>\n<li>comparable\u63a5\u53e3\u5b9e\u9645\u4e0a\u662f\u51fa\u81eajava.lang\u5305 \u5b83\u6709\u4e00\u4e2a <code>compareTo(Object obj)<\/code>\u65b9\u6cd5\u7528\u6765\u6392\u5e8f<\/li>\n<li>comparator\u63a5\u53e3\u5b9e\u9645\u4e0a\u662f\u51fa\u81ea java.util \u5305\u5b83\u6709\u4e00\u4e2a<code>compare(Object obj1, Object obj2)<\/code>\u65b9\u6cd5\u7528\u6765\u6392\u5e8f<\/li>\n<\/ul>\n<p>\u4e00\u822c\u6211\u4eec\u9700\u8981\u5bf9\u4e00\u4e2a\u96c6\u5408\u4f7f\u7528\u81ea\u5b9a\u4e49\u6392\u5e8f\u65f6\uff0c\u6211\u4eec\u5c31\u8981\u91cd\u5199<code>compareTo()<\/code>\u65b9\u6cd5\u6216<code>compare()<\/code>\u65b9\u6cd5\uff0c\u5f53\u6211\u4eec\u9700\u8981\u5bf9\u67d0\u4e00\u4e2a\u96c6\u5408\u5b9e\u73b0\u4e24\u79cd\u6392\u5e8f\u65b9\u5f0f\uff0c\u6bd4\u5982\u4e00\u4e2asong\u5bf9\u8c61\u4e2d\u7684\u6b4c\u540d\u548c\u6b4c\u624b\u540d\u5206\u522b\u91c7\u7528\u4e00\u79cd\u6392\u5e8f\u65b9\u6cd5\u7684\u8bdd\uff0c\u6211\u4eec\u53ef\u4ee5\u91cd\u5199<code>compareTo()<\/code>\u65b9\u6cd5\u548c\u4f7f\u7528\u81ea\u5236\u7684Comparator\u65b9\u6cd5\u6216\u8005\u4ee5\u4e24\u4e2aComparator\u6765\u5b9e\u73b0\u6b4c\u540d\u6392\u5e8f\u548c\u6b4c\u661f\u540d\u6392\u5e8f\uff0c\u7b2c\u4e8c\u79cd\u4ee3\u8868\u6211\u4eec\u53ea\u80fd\u4f7f\u7528\u4e24\u4e2a\u53c2\u6570\u7248\u7684 <code>Collections.sort()<\/code>.<\/p>\n<h3>Comparator\u5b9a\u5236\u6392\u5e8f<\/h3>\n<pre>`java        ArrayList&lt;Integer&gt; arrayList = new ArrayList&lt;Integer&gt;();        arrayList.add(-1);        arrayList.add(3);        arrayList.add(3);        arrayList.add(-5);        arrayList.add(7);        arrayList.add(4);        arrayList.add(-9);        arrayList.add(-7);        System.out.println(\"\"\u539f\u59cb\u6570\u7ec4:\"\");        System.out.println(arrayList);        \/\/ void reverse(List list)\uff1a\u53cd\u8f6c        Collections.reverse(arrayList);        System.out.println(\"\"Collections.reverse(arrayList):\"\");        System.out.println(arrayList);<\/pre>\n<p><code><\/code><\/p>\n<pre><code>    \/\/ void sort(List list),\u6309\u81ea\u7136\u6392\u5e8f\u7684\u5347\u5e8f\u6392\u5e8f    Collections.sort(arrayList);    System.out.println(\"\"Collections.sort(arrayList):\"\");    System.out.println(arrayList);    \/\/ \u5b9a\u5236\u6392\u5e8f\u7684\u7528\u6cd5    Collections.sort(arrayList, new Comparator&lt;Integer&gt;() {        @Override        public int compare(Integer o1, Integer o2) {            return o2.compareTo(o1);        }    });    System.out.println(\"\"\u5b9a\u5236\u6392\u5e8f\u540e\uff1a\"\");    System.out.println(arrayList);<\/code><\/pre>\n<p><code><\/code>`<\/p>\n<p>Output:<\/p>\n<p><code>\u539f\u59cb\u6570\u7ec4:[-1, 3, 3, -5, 7, 4, -9, -7]Collections.reverse(arrayList):[-7, -9, 4, 7, -5, 3, 3, -1]Collections.sort(arrayList):[-9, -7, -5, -1, 3, 3, 4, 7]\u5b9a\u5236\u6392\u5e8f\u540e\uff1a[7, 4, 3, 3, -1, -5, -7, -9]<\/code><\/p>\n<h3>\u91cd\u5199compareTo\u65b9\u6cd5\u5b9e\u73b0\u6309\u5e74\u9f84\u6765\u6392\u5e8f<\/h3>\n<p><code><\/code>`java\/\/ person\u5bf9\u8c61\u6ca1\u6709\u5b9e\u73b0Comparable\u63a5\u53e3\uff0c\u6240\u4ee5\u5fc5\u987b\u5b9e\u73b0\uff0c\u8fd9\u6837\u624d\u4e0d\u4f1a\u51fa\u9519\uff0c\u624d\u53ef\u4ee5\u4f7ftreemap\u4e2d\u7684\u6570\u636e\u6309\u987a\u5e8f\u6392\u5217\/\/ \u524d\u9762\u4e00\u4e2a\u4f8b\u5b50\u7684String\u7c7b\u5df2\u7ecf\u9ed8\u8ba4\u5b9e\u73b0\u4e86Comparable\u63a5\u53e3\uff0c\u8be6\u7ec6\u53ef\u4ee5\u67e5\u770bString\u7c7b\u7684API\u6587\u6863\uff0c\u53e6\u5916\u5176\u4ed6\/\/ \u50cfInteger\u7c7b\u7b49\u90fd\u5df2\u7ecf\u5b9e\u73b0\u4e86Comparable\u63a5\u53e3\uff0c\u6240\u4ee5\u4e0d\u9700\u8981\u53e6\u5916\u5b9e\u73b0\u4e86<\/p>\n<p>public  class Person implements Comparable&lt;Person&gt; {    private String name;    private int age;<\/p>\n<pre><code>public Person(String name, int age) {    super();    this.name = name;    this.age = age;}public String getName() {    return name;}public void setName(String name) {    this.name = name;}public int getAge() {    return age;}public void setAge(int age) {    this.age = age;}\/** * TODO\u91cd\u5199compareTo\u65b9\u6cd5\u5b9e\u73b0\u6309\u5e74\u9f84\u6765\u6392\u5e8f *\/@Overridepublic int compareTo(Person o) {    \/\/ TODO Auto-generated method stub    if (this.age &gt; o.getAge()) {        return 1;    } else if (this.age &lt; o.getAge()) {        return -1;    }    return age;}<\/code><\/pre>\n<p>}<\/p>\n<p><code><\/code>`<\/p>\n<p><code><\/code>`java    public static void main(String[] args) {        TreeMap&lt;Person, String&gt; pdata = new TreeMap&lt;Person, String&gt;();        pdata.put(new Person(&#8220;&#8221;\u5f20\u4e09&#8221;&#8221;, 30), &#8220;&#8221;zhangsan&#8221;&#8221;);        pdata.put(new Person(&#8220;&#8221;\u674e\u56db&#8221;&#8221;, 20), &#8220;&#8221;lisi&#8221;&#8221;);        pdata.put(new Person(&#8220;&#8221;\u738b\u4e94&#8221;&#8221;, 10), &#8220;&#8221;wangwu&#8221;&#8221;);        pdata.put(new Person(&#8220;&#8221;\u5c0f\u7ea2&#8221;&#8221;, 5), &#8220;&#8221;xiaohong&#8221;&#8221;);        \/\/ \u5f97\u5230key\u7684\u503c\u7684\u540c\u65f6\u5f97\u5230key\u6240\u5bf9\u5e94\u7684\u503c        Set&lt;Person&gt; keys = pdata.keySet();        for (Person key : keys) {            System.out.println(key.getAge() + &#8220;&#8221;-&#8220;&#8221; + key.getName());<\/p>\n<pre><code>    }}<\/code><\/pre>\n<p><code><\/code>`<\/p>\n<p>Output\uff1a<\/p>\n<p><code>5-\u5c0f\u7ea210-\u738b\u4e9420-\u674e\u56db30-\u5f20\u4e09<\/code><\/p>\n<pre><code>            \"```\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;`&#8221; comparable\u63a5\u53e3\u5b9e\u9645\u4e0a\u662f\u51fa\u81eajava.lang\u5305 \u5b83\u6709\u4e00\u4e2a compa [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[101],"tags":[],"class_list":["post-37418","post","type-post","status-publish","format-standard","hentry","category-c"],"_links":{"self":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/37418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/comments?post=37418"}],"version-history":[{"count":1,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/37418\/revisions"}],"predecessor-version":[{"id":37419,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/37418\/revisions\/37419"}],"wp:attachment":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/media?parent=37418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/categories?post=37418"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/tags?post=37418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}