# TreeMap

也是一種Map, 有key, value

跟HashMap的差異是裡面(key,value)的擺放會依照key值進行升序擺放

假設將 (1, "value1") (2, "value2")  ..... (n, "valueN")等N個 pairs不依照順序放進treeMap中

&#x20;結果還&#x662F;***會以key值大小(自然順序)進行升序排列***。&#x20;

key值小的擺到前面。

因為整個map已經整理排序過。所以可以透過lowerKey(int keyValue)、higherKey(int keyValue)等API取得

某個最接近的key值。

ex:

```
  TreeMap<Integer, String> tm = new TreeMap<>();
        tm.put(2, "value2");        
        tm.put(1, "value1");
        tm.put(3, "value3");
        tm.put(4, "value4");

        while(tm.size() > 0){
            //取出第一個entry
            Entry entry = (Entry)tm.pollFirstEntry();
            System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());
        }
        
        
        //output:
        // key:1 value:value1
        // key:2 value:value2
        // key:3 value:value3
        // key:4 value:value4
        
        //也已透過lowerKey(k) (<k), higerKey(k) (>k)
        //找出接近k但不等於k的key值
        Integer lkey = tm.lowerKey(3); // lkey = 2
        Integer hkey = tm.higerKey(3); // hkey = 4        
        Integer nkey = tm.higerKey(5); // nkey = null, 沒有 

        
        //也已透過floorKey(k) (<=k), ceilingKey(k) (>=k)
        //找出接近k且可以等於k的key值
        Integer fkey = tm.floorKey(3); // fkey = 3
        Integer ckey = tm.ceilingKey(3); // ckey = 3
        Integer nkey = tm.ceilingKey(5); // nkey = null, 沒有 

```
