{"id":1429,"date":"2026-05-19T22:38:06","date_gmt":"2026-05-19T14:38:06","guid":{"rendered":"https:\/\/yunyanglib.cn\/?p=1429"},"modified":"2026-05-19T22:38:07","modified_gmt":"2026-05-19T14:38:07","slug":"%e3%80%90java%e3%80%91treemap-%e8%af%a6%e8%a7%a3%ef%bc%9a%e4%bb%8e%e7%ba%a2%e9%bb%91%e6%a0%91%e5%8e%9f%e7%90%86%e5%88%b0%e5%ae%9e%e6%88%98%e5%ba%94%e7%94%a8","status":"publish","type":"post","link":"https:\/\/yunyanglib.cn\/?p=1429","title":{"rendered":"\u3010Java\u3011TreeMap \u8be6\u89e3\uff1a\u4ece\u7ea2\u9ed1\u6811\u539f\u7406\u5230\u5b9e\u6218\u5e94\u7528"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u5927\u5bb6\u597d\uff0c\u6211\u662f\u4e91\u626c\uff5e \u4eca\u5929\u6765\u548c\u5927\u5bb6\u6df1\u5165\u804a\u804a Java \u96c6\u5408\u6846\u67b6\u4e2d\u7684 TreeMap\uff0c\u8fd9\u4e2a\u57fa\u4e8e\u7ea2\u9ed1\u6811\u5b9e\u73b0\u7684\u6709\u5e8f\u6620\u5c04\u5bb9\u5668\uff0c\u5728\u5b9e\u9645\u5f00\u53d1\u4e2d\u7ecf\u5e38\u88ab\u7528\u4e8e\u9700\u8981\u6392\u5e8f\u7684\u573a\u666f\u3002\u672c\u6587\u4f1a\u4ece\u5e95\u5c42\u6570\u636e\u7ed3\u6784\u8bb2\u8d77\uff0c\u7ed3\u5408\u4ee3\u7801\u793a\u4f8b\uff0c\u5e2e\u5927\u5bb6\u5f7b\u5e95\u641e\u61c2 TreeMap \u7684\u7528\u6cd5\u548c\u539f\u7406\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001TreeMap \u6982\u8ff0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">TreeMap \u662f Java \u4e2d\u552f\u4e00\u7684\u6709\u5e8f Map \u5b9e\u73b0\uff0c\u5b83\u57fa\u4e8e<strong>\u7ea2\u9ed1\u6811\uff08Red-Black Tree\uff09<\/strong> \u6570\u636e\u7ed3\u6784\uff0c\u80fd\u591f\u81ea\u52a8\u4fdd\u6301\u952e\uff08Key\uff09\u7684\u6709\u5e8f\u6027 \u2014\u2014 \u8981\u4e48\u9075\u5faa\u81ea\u7136\u987a\u5e8f\uff0c\u8981\u4e48\u901a\u8fc7\u81ea\u5b9a\u4e49\u6bd4\u8f83\u5668\u6307\u5b9a\u987a\u5e8f\u3002\u8fd9\u4e00\u70b9\u548c HashMap\uff08\u65e0\u5e8f\uff09\u3001LinkedHashMap\uff08\u4fdd\u6301\u63d2\u5165\u987a\u5e8f\uff09\u6709\u672c\u8d28\u533a\u522b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u5e95\u5c42\u6838\u5fc3\uff1a\u7ea2\u9ed1\u6811\u57fa\u7840<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8981\u7406\u89e3 TreeMap \u7684\u6027\u80fd\u4f18\u52bf\uff0c\u9996\u5148\u5f97\u641e\u61c2\u7ea2\u9ed1\u6811\u7684\u7279\u6027\u3002\u7ea2\u9ed1\u6811\u662f\u4e00\u79cd<strong>\u81ea\u5e73\u8861\u4e8c\u53c9\u67e5\u627e\u6811<\/strong>\uff0c\u5b83\u89e3\u51b3\u4e86\u666e\u901a\u4e8c\u53c9\u67e5\u627e\u6811\u5bb9\u6613\u5931\u8861\u7684\u95ee\u9898\uff0c\u4fdd\u8bc1\u4e86\u67e5\u627e\u3001\u63d2\u5165\u3001\u5220\u9664\u64cd\u4f5c\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u5747\u4e3a <strong>O(log n)<\/strong>\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.1 \u4e8c\u53c9\u67e5\u627e\u6811\u7684\u4e0d\u8db3<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u666e\u901a\u4e8c\u53c9\u67e5\u627e\u6811\u7684\u7279\u6027\u662f\uff1a\u5de6\u5b50\u6811\u952e\u503c \u7236\u8282\u70b9\u952e\u503c \u53f3\u5b50\u6811\u952e\u503c\u3002\u4f46\u5982\u679c\u63d2\u5165\u7684\u5143\u7d20\u662f\u6709\u5e8f\u7684\uff08\u6bd4\u5982 1\u30012\u30013\u30014\uff09\uff0c\u4f1a\u9000\u5316\u6210\u94fe\u8868\u7ed3\u6784\uff0c\u6b64\u65f6\u64cd\u4f5c\u590d\u6742\u5ea6\u53d8\u6210 O (n)\uff0c\u6027\u80fd\u6781\u5dee\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.2 \u7ea2\u9ed1\u6811\u7684 5 \u5927\u7279\u6027<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ea2\u9ed1\u6811\u901a\u8fc7\u4ee5\u4e0b\u89c4\u5219\u4fdd\u8bc1\u81ea\u5e73\u8861\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6bcf\u4e2a\u8282\u70b9\u8981\u4e48\u662f\u7ea2\u8272\uff0c\u8981\u4e48\u662f\u9ed1\u8272\uff1b<\/li>\n\n\n\n<li>\u6839\u8282\u70b9\u5fc5\u987b\u662f\u9ed1\u8272\uff1b<\/li>\n\n\n\n<li>\u6240\u6709\u53f6\u5b50\u8282\u70b9\uff08NIL \u8282\u70b9\uff09\u90fd\u662f\u9ed1\u8272\uff1b<\/li>\n\n\n\n<li>\u7ea2\u8272\u8282\u70b9\u7684\u4e24\u4e2a\u5b50\u8282\u70b9\u5fc5\u987b\u662f\u9ed1\u8272\uff08\u907f\u514d\u8fde\u7eed\u7ea2\u8282\u70b9\uff09\uff1b<\/li>\n\n\n\n<li>\u4ece\u4efb\u4e00\u8282\u70b9\u5230\u5176\u6240\u6709\u53f6\u5b50\u8282\u70b9\u7684\u8def\u5f84\uff0c\u9ed1\u8272\u8282\u70b9\u6570\u91cf\u76f8\u540c\uff08\u4fdd\u8bc1\u6811\u7684\u9ad8\u5ea6\u5e73\u8861\uff09\u3002<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u63d2\u5165\u6216\u5220\u9664\u5143\u7d20\u7834\u574f\u8fd9\u4e9b\u89c4\u5219\u65f6\uff0c\u7ea2\u9ed1\u6811\u4f1a\u901a\u8fc7<strong>\u65cb\u8f6c\uff08\u5de6\u65cb \/ \u53f3\u65cb\uff09<\/strong> \u548c<strong>\u989c\u8272\u7ffb\u8f6c<\/strong>\u6765\u6062\u590d\u5e73\u8861\uff0c\u8fd9\u4e5f\u662f TreeMap \u80fd\u4fdd\u6301\u9ad8\u6548\u7684\u6838\u5fc3\u539f\u56e0\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001TreeMap \u7684\u6838\u5fc3\u7279\u6027\u4e0e\u7528\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">3.1 \u81ea\u7136\u987a\u5e8f\uff08\u9ed8\u8ba4\u6392\u5e8f\uff09<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">TreeMap \u5bf9\u5b9e\u73b0\u4e86 <code>Comparable<\/code> \u63a5\u53e3\u7684\u952e\uff08\u5982 Integer\u3001String\u3001Date \u7b49\uff09\uff0c\u4f1a\u81ea\u52a8\u4f7f\u7528\u5176 <code>compareTo()<\/code> \u65b9\u6cd5\u8fdb\u884c\u6392\u5e8f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4ee3\u7801\u793a\u4f8b\uff1a\u81ea\u7136\u987a\u5e8f\u6392\u5e8f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.util.TreeMap;\n\npublic class TreeMapNaturalOrderDemo {\n    public static void main(String&#91;] args) {\n        \/\/ \u952e\u4e3a Integer \u7c7b\u578b\uff08\u5b9e\u73b0\u4e86 Comparable \u63a5\u53e3\uff09\n        TreeMap&lt;Integer,String&gt; treeMap = new TreeMap&lt;&gt;();\n        \n        \/\/ \u65e0\u5e8f\u63d2\u5165\u6570\u636e\n        treeMap.put(3, \"\u5f20\u4e09\");\n        treeMap.put(1, \"\u674e\u56db\");\n        treeMap.put(2, \"\u738b\u4e94\");\n        treeMap.put(5, \"\u8d75\u516d\");\n        treeMap.put(4, \"\u5b59\u4e03\");\n        \n        \/\/ \u904d\u5386\u8f93\u51fa\uff1a\u81ea\u52a8\u6309\u952e\u5347\u5e8f\u6392\u5217\n        System.out.println(\"\u81ea\u7136\u987a\u5e8f\uff08\u5347\u5e8f\uff09\uff1a\");\n        for (Integer key : treeMap.keySet()) {\n            System.out.println(key + \" -&gt; \" + treeMap.get(key));\n        }\n        \n        \/\/ \u8f93\u51fa\u7ed3\u679c\uff1a\n        \/\/ \u81ea\u7136\u987a\u5e8f\uff08\u5347\u5e8f\uff09\uff1a\n        \/\/ 1 -&gt; \u674e\u56db\n        \/\/ 2 -&gt; \u738b\u4e94\n        \/\/ 3 -&gt; \u5f20\u4e09\n        \/\/ 4 -&gt; \u5b59\u4e03\n        \/\/ 5 -&gt; \u8d75\u516d\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6e90\u7801\u89e3\u8bfb<\/strong>\uff1aTreeMap \u7684 <code>put()<\/code> \u65b9\u6cd5\u4f1a\u8c03\u7528 <code>compareTo()<\/code> \u8fdb\u884c\u952e\u7684\u6bd4\u8f83\uff0c\u6838\u5fc3\u903b\u8f91\u5982\u4e0b\uff08\u7b80\u5316\u7248\uff09\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public V put(K key, V value) {\n    Entry t = root;\n    if (t == null) {\n        compare(key, key); \/\/ \u68c0\u67e5\u952e\u662f\u5426\u4e3a null\uff08TreeMap \u4e0d\u5141\u8bb8 null \u952e\uff09\n        root = new Entry&lt;&gt;(key, value, null);\n        size = 1;\n        modCount++;\n        return null;\n    }\n    int cmp;\n    Entry&lt;K,V&gt; parent;\n    Comparator&lt;? super K&gt; cpr = comparator;\n    if (cpr != null) {\n        \/\/ \u81ea\u5b9a\u4e49\u6bd4\u8f83\u5668\u903b\u8f91\n        do {\n            parent = t;\n            cmp = cpr.compare(key, t.key);\n            if (cmp &lt; 0)\n                t = t.left;\n            else if (cmp &gt; 0)\n                t = t.right;\n            else\n                return t.setValue(value); \/\/ \u952e\u76f8\u540c\u5219\u66f4\u65b0\u503c\n        } while (t != null);\n    } else {\n        \/\/ \u81ea\u7136\u987a\u5e8f\u903b\u8f91\uff08\u4f9d\u8d56 Comparable \u63a5\u53e3\uff09\n        if (key == null)\n            throw new NullPointerException();\n        @SuppressWarnings(\"unchecked\")\n        Comparable&lt;? super K&gt; k = (Comparable&lt;? super K&gt;) key;\n        do {\n            parent = t;\n            cmp = k.compareTo(t.key); \/\/ \u8c03\u7528\u952e\u7684 compareTo \u65b9\u6cd5\n            if (cmpcmp &lt; 0)\n                t = t.left;\n            else if (cmp &gt; 0)\n                t = t.right;\n            else\n                return t.setValue(value);\n        } while (t != null);\n    }\n    Entry&lt;K,V&gt; e = new Entry&lt;&gt;(key, value, parent);\n    if (cmp &lt; 0)\n        parent.left = e;\n    else\n        parent.right = e;\n    fixAfterInsertion(e); \/\/ \u63d2\u5165\u540e\u4fee\u590d\u7ea2\u9ed1\u6811\u5e73\u8861\n    size++;\n    modCount++;\n    return null;\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3.2 \u81ea\u5b9a\u4e49\u6392\u5e8f\uff08Comparator\uff09<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u952e\u6ca1\u6709\u5b9e\u73b0 <code>Comparable<\/code> \u63a5\u53e3\uff0c\u6216\u8005\u60f3\u6539\u53d8\u9ed8\u8ba4\u6392\u5e8f\u89c4\u5219\uff08\u6bd4\u5982\u964d\u5e8f\uff09\uff0c\u53ef\u4ee5\u901a\u8fc7 <code>TreeMap(Comparator&gt; comparator)<\/code> \u6784\u9020\u65b9\u6cd5\u6307\u5b9a\u6392\u5e8f\u903b\u8f91\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4ee3\u7801\u793a\u4f8b\uff1a\u81ea\u5b9a\u4e49\u964d\u5e8f\u6392\u5e8f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.util.TreeMap;\nimport java.util.Comparator;\n\npublic class TreeMapCustomComparatorDemo {\n    public static void main(String&#91;] args) {\n        \/\/ \u81ea\u5b9a\u4e49\u6bd4\u8f83\u5668\uff1a\u6309 Integer \u952e\u964d\u5e8f\u6392\u5217\n     TreeMap&lt;Integer, String&gt; treeMap = new TreeMap&lt;&gt;(new Comparator&lt;Integer&gt;() {\n         @Override\n        public int compare(Integer o1, Integer o2) {\n            \/\/ o1 - o2 \u662f\u5347\u5e8f\uff0co2 - o1 \u662f\u964d\u5e8f\n           return o2 - o1;\n        }\n      });\n     \/\/ \u7b80\u5316\u5199\u6cd5\uff08Lambda \u8868\u8fbe\u5f0f\uff0cJava 8+\uff09\n     \/\/ TreeMap&lt;Integer, String&gt; treeMap = new TreeMap&lt;&gt;((o1, o2) -&gt; o2 - o1);\n     treeMap.put(3, \"\u5f20\u4e09\");\n     treeMap.put(1, \"\u674e\u56db\");\n     treeMap.put(2, \"\u738b\u4e94\");\n     treeMap.put(5, \"\u8d75\u516d\");\n     treeMap.put(4, \"\u5b59\u4e03\");\n    \/\/ \u904d\u5386\u8f93\u51fa\uff1a\u6309\u952e\u964d\u5e8f\u6392\u5217\n    System.out.println(\"\u81ea\u5b9a\u4e49\u987a\u5e8f\uff08\u964d\u5e8f\uff09\uff1a\");\n    for (Integer key : treeMap.keySet()) {\n        System.out.println(key + \" -&gt; \" + treeMap.get(key));\n    }\n    \/\/ \u8f93\u51fa\u7ed3\u679c\uff1a\n    \/\/ 5 -&gt; \u8d75\u516d\n    \/\/ 4 -&gt; \u5b59\u4e03\n    \/\/ 3 -&gt; \u5f20\u4e09\n    \/\/ 2 -&gt; \u738b\u4e94\n    \/\/ 1 -&gt; \u674e\u56db\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4ee3\u7801\u89e3\u8bfb<\/strong>\uff1a\u901a\u8fc7 Comparator \u63a5\u53e3\u7684 <code>compare(o1, o2)<\/code> \u65b9\u6cd5\u5b9a\u4e49\u6392\u5e8f\u89c4\u5219\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8fd4\u56de\u8d1f\u6570\uff1ao1 \u6392\u5728 o2 \u524d\u9762\uff1b<\/li>\n\n\n\n<li>\u8fd4\u56de\u6b63\u6570\uff1ao1 \u6392\u5728 o2 \u540e\u9762\uff1b<\/li>\n\n\n\n<li>\u8fd4\u56de 0\uff1ao1 \u548c o2 \u89c6\u4e3a\u76f8\u540c\u952e\uff0c\u540e\u9762\u7684\u4f1a\u8986\u76d6\u524d\u9762\u7684\u503c\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3.3 \u6709\u5e8f\u6027\u5e26\u6765\u7684\u5b9e\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">TreeMap \u7684\u6709\u5e8f\u6027\u63d0\u4f9b\u4e86\u5f88\u591a\u4fbf\u6377\u65b9\u6cd5\uff0c\u8fd9\u662f HashMap \u4e0d\u5177\u5907\u7684\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ 1. \u83b7\u53d6\u6700\u5c0f\u952e\nInteger firstKey = treeMap.firstKey(); \/\/ \u7ed3\u679c\uff1a1\uff08\u81ea\u7136\u987a\u5e8f\uff09\n\/\/ 2. \u83b7\u53d6\u6700\u5927\u952e\nInteger lastKey = treeMap.lastKey(); \/\/ \u7ed3\u679c\uff1a5\uff08\u81ea\u7136\u987a\u5e8f\uff09\n\/\/ 3. \u83b7\u53d6\u5c0f\u4e8e\u7b49\u4e8e\u6307\u5b9a\u952e\u7684\u6700\u5927\u952e\nInteger floorKey = treeMap.floorKey(3); \/\/ \u7ed3\u679c\uff1a3\n\/\/ 4. \u83b7\u53d6\u5927\u4e8e\u7b49\u4e8e\u6307\u5b9a\u952e\u7684\u6700\u5c0f\u952e\nInteger ceilingKey = treeMap.ceilingKey(3); \/\/ \u7ed3\u679c\uff1a3\n\/\/ 5. \u83b7\u53d6\u5c0f\u4e8e\u6307\u5b9a\u952e\u7684\u6700\u5927\u952e\nInteger lowerKey = treeMap.lowerKey(3); \/\/ \u7ed3\u679c\uff1a2\n\/\/ 6. \u83b7\u53d6\u5927\u4e8e\u6307\u5b9a\u952e\u7684\u6700\u5c0f\u952e\nInteger higherKey = treeMap.higherKey(3); \/\/ \u7ed3\u679c\uff1a4\n\/\/ 7. \u622a\u53d6\u5b50Map\uff08\u5de6\u95ed\u53f3\u5f00\uff09\nSortedMap&lt;Integer, String&gt; subMap = treeMap.subMap(2, 5);\/\/ \u952e\uff1a2\u30013\u30014\nsubMap.forEach((key, value) -&gt; System.out.println(key + \" -&gt; \" + value));\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001TreeMap vs HashMap vs LinkedHashMap<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9e\u9645\u5f00\u53d1\u4e2d\u5982\u4f55\u9009\u62e9 Map \u5b9e\u73b0\uff1f\u5173\u952e\u770b\u9700\u6c42\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">\u7279\u6027<\/th><th class=\"has-text-align-left\" data-align=\"left\">TreeMap<\/th><th class=\"has-text-align-left\" data-align=\"left\">HashMap<\/th><th class=\"has-text-align-left\" data-align=\"left\">LinkedHashMap<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">\u5e95\u5c42\u7ed3\u6784<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u7ea2\u9ed1\u6811<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u6570\u7ec4 + \u94fe\u8868 \/ \u7ea2\u9ed1\u6811\uff08JDK8+\uff09<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u6570\u7ec4 + \u94fe\u8868 \/ \u7ea2\u9ed1\u6811 + \u53cc\u5411\u94fe\u8868<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">\u6392\u5e8f\u6027<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u81ea\u7136\u987a\u5e8f \/ \u81ea\u5b9a\u4e49\u987a\u5e8f<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u65e0\u5e8f<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u4fdd\u6301\u63d2\u5165\u987a\u5e8f<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">\u67e5\u627e\u6548\u7387<\/td><td class=\"has-text-align-left\" data-align=\"left\">O(log n)<\/td><td class=\"has-text-align-left\" data-align=\"left\">O (1)\uff08\u7406\u60f3\u60c5\u51b5\uff09<\/td><td class=\"has-text-align-left\" data-align=\"left\">O (1)\uff08\u7406\u60f3\u60c5\u51b5\uff09<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">\u63d2\u5165 \/ \u5220\u9664\u6548\u7387<\/td><td class=\"has-text-align-left\" data-align=\"left\">O(log n)<\/td><td class=\"has-text-align-left\" data-align=\"left\">O (1)\uff08\u7406\u60f3\u60c5\u51b5\uff09<\/td><td class=\"has-text-align-left\" data-align=\"left\">O (1)\uff08\u7406\u60f3\u60c5\u51b5\uff09<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">\u5141\u8bb8 null \u952e<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u4e0d\u5141\u8bb8<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u5141\u8bb8\uff08\u4ec5\u4e00\u4e2a\uff09<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u5141\u8bb8\uff08\u4ec5\u4e00\u4e2a\uff09<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">\u9002\u7528\u573a\u666f<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u9700\u8981\u6392\u5e8f\u7684\u573a\u666f<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u65e0\u9700\u6392\u5e8f\uff0c\u8ffd\u6c42\u9ad8\u6548<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u9700\u8981\u4fdd\u6301\u63d2\u5165\u987a\u5e8f\u7684\u573a\u666f<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u5b9e\u6218\u573a\u666f\u793a\u4f8b\uff1a\u6392\u884c\u699c\u529f\u80fd<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">TreeMap \u7684\u6709\u5e8f\u6027\u975e\u5e38\u9002\u5408\u5b9e\u73b0\u6392\u884c\u699c\u3001\u4f18\u5148\u7ea7\u961f\u5217\u7b49\u529f\u80fd\u3002\u6bd4\u5982\uff0c\u5b9e\u73b0\u4e00\u4e2a\u5b66\u751f\u6210\u7ee9\u6392\u884c\u699c\uff08\u6309\u6210\u7ee9\u964d\u5e8f\uff09\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.util.Comparator;\nimport java.util.TreeMap;\n\n\/\/ \u5b66\u751f\u7c7b\nclass Student {\n    private String name;\n    private int score;\n\n    public Student(String name, int score) {\n        this.name = name;\n        this.score = score;\n    }\n\n    \/\/ getter\/setter\n    public String getName() { return name; }\n    public int getScore() { return score; }\n\n    @Override\n    public String toString() {\n        return \"{\" + name + \": \" + score + \"}\";\n    }\n}\n\npublic class ScoreRankingDemo {\n    public static void main(String&#91;] args) {\n        \/\/ \u81ea\u5b9a\u4e49\u6bd4\u8f83\u5668\uff1a\u6309\u6210\u7ee9\u964d\u5e8f\uff0c\u6210\u7ee9\u76f8\u540c\u6309\u59d3\u540d\u5347\u5e8f\n        TreeMap&lt;Student, Integer&gt; rankingMap = new TreeMap&lt;&gt;(new Comparator&lt;Student&gt;() {\n            @Override\n            public int compare(Student s1, Student s2) {\n                \/\/ \u6210\u7ee9\u964d\u5e8f\n                if (s1.getScore() != s2.getScore()) {\n                    return s2.getScore() - s1.getScore();\n                }\n                \/\/ \u59d3\u540d\u5347\u5e8f\uff08String \u5b9e\u73b0\u4e86 Comparable\uff09\n                return s1.getName().compareTo(s2.getName());\n            }\n        });\n\n        \/\/ \u6dfb\u52a0\u5b66\u751f\u6210\u7ee9\n        rankingMap.put(new Student(\"\u5f20\u4e09\", 95), 95);\n        rankingMap.put(new Student(\"\u674e\u56db\", 98), 98);\n        rankingMap.put(new Student(\"\u738b\u4e94\", 95), 95);\n        rankingMap.put(new Student(\"\u8d75\u516d\", 92), 92);\n\n        \/\/ \u8f93\u51fa\u6392\u884c\u699c\uff08\u81ea\u52a8\u6392\u5e8f\uff09\n        System.out.println(\"\u5b66\u751f\u6210\u7ee9\u6392\u884c\u699c\uff1a\");\n        int rank = 1;\n        for (Student student : rankingMap.keySet()) {\n            System.out.println(\"\u7b2c\" + rank + \"\u540d\uff1a\" + student);\n            rank++;\n        }\n\n        \/\/ \u8f93\u51fa\u7ed3\u679c\uff1a\n        \/\/ \u5b66\u751f\u6210\u7ee9\u6392\u884c\u699c\uff1a\n        \/\/ \u7b2c1\u540d\uff1a{\u674e\u56db: 98}\n        \/\/ \u7b2c2\u540d\uff1a{\u5f20\u4e09: 95}\n        \/\/ \u7b2c3\u540d\uff1a{\u738b\u4e94: 95}\n        \/\/ \u7b2c4\u540d\uff1a{\u8d75\u516d: 92}\n    }\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u603b\u7ed3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">TreeMap \u662f Java \u4e2d\u6781\u5177\u7279\u8272\u7684 Map \u5b9e\u73b0\uff0c\u5176\u6838\u5fc3\u4f18\u52bf\u5728\u4e8e<strong>\u6709\u5e8f\u6027<\/strong>\uff0c\u5e95\u5c42\u901a\u8fc7\u7ea2\u9ed1\u6811\u4fdd\u8bc1\u4e86\u9ad8\u6548\u7684\u64cd\u4f5c\u6027\u80fd\u3002\u603b\u7ed3\u4e00\u4e0b\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>TreeMap \u57fa\u4e8e\u7ea2\u9ed1\u6811\uff0c\u67e5\u627e\u3001\u63d2\u5165\u3001\u5220\u9664\u590d\u6742\u5ea6 O (log n)\uff1b<\/li>\n\n\n\n<li>\u652f\u6301\u81ea\u7136\u987a\u5e8f\uff08\u9700\u5b9e\u73b0 Comparable\uff09\u548c\u81ea\u5b9a\u4e49\u987a\u5e8f\uff08\u9700\u6307\u5b9a Comparator\uff09\uff1b<\/li>\n\n\n\n<li>\u4e0d\u5141\u8bb8 null \u952e\uff0c\u6709\u5e8f\u6027\u5e26\u6765\u4e86\u4e30\u5bcc\u7684\u4fbf\u6377\u65b9\u6cd5\uff1b<\/li>\n\n\n\n<li>\u9002\u7528\u4e8e\u9700\u8981\u6392\u5e8f\u7684\u573a\u666f\uff08\u5982\u6392\u884c\u699c\u3001\u533a\u95f4\u67e5\u8be2\uff09\uff0c\u65e0\u9700\u6392\u5e8f\u65f6\u4f18\u5148\u9009\u62e9 HashMap\u3002<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e0c\u671b\u672c\u6587\u80fd\u5e2e\u52a9\u5927\u5bb6\u5f7b\u5e95\u641e\u61c2 TreeMap\uff0c\u5982\u679c\u6709\u7591\u95ee\u6216\u8865\u5145\uff0c\u6b22\u8fce\u5728\u8bc4\u8bba\u533a\u4ea4\u6d41\uff5e<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5927\u5bb6\u597d\uff0c\u6211\u662f\u4e91\u626c\uff5e \u4eca\u5929\u6765\u548c\u5927\u5bb6\u6df1\u5165\u804a\u804a Java \u96c6\u5408\u6846\u67b6\u4e2d\u7684 TreeMap\uff0c\u8fd9\u4e2a\u57fa\u4e8e\u7ea2\u9ed1\u6811\u5b9e\u73b0\u7684\u6709\u5e8f\u6620\u5c04<\/p>\n<div class=\"more-link\">\n\t\t\t\t <a href=\"https:\/\/yunyanglib.cn\/?p=1429\" class=\"link-btn theme-btn\"><span>Read More <\/span> <i class=\"fa fa-caret-right\"><\/i><\/a>\n\t\t\t<\/div>\n","protected":false},"author":1,"featured_media":1477,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[15],"class_list":["post-1429","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-java"],"_links":{"self":[{"href":"https:\/\/yunyanglib.cn\/index.php?rest_route=\/wp\/v2\/posts\/1429","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yunyanglib.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yunyanglib.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yunyanglib.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yunyanglib.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1429"}],"version-history":[{"count":5,"href":"https:\/\/yunyanglib.cn\/index.php?rest_route=\/wp\/v2\/posts\/1429\/revisions"}],"predecessor-version":[{"id":1476,"href":"https:\/\/yunyanglib.cn\/index.php?rest_route=\/wp\/v2\/posts\/1429\/revisions\/1476"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yunyanglib.cn\/index.php?rest_route=\/wp\/v2\/media\/1477"}],"wp:attachment":[{"href":"https:\/\/yunyanglib.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yunyanglib.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yunyanglib.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}