1

Sequence of statements to copy HashMap to TreeMap

private Map<String,Bitmap> imageFilexx= new HashMap<String,Bitmap>();

//Assuming map has values
printMap(imageFilexx);
TreeMap<String,Bitmap> imageFilexxS;
imageFilexxS= new TreeMap<String,Bitmap>(imageFilexx);
printMap(imageFilexxS);

Function To Display Above Map:

public static void printMap(Map<String, Bitmap> map) {
        for (Map.Entry entry : map.entrySet()) {
            System.out.println("Key : " + entry.getKey());
        }
    }

Input:

Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p7.png  
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p1.png 
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p5.png 
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p3.png 
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p11.png 
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p9.png 

Current O/P:

Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p1.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p11.png //11 should be displayed in the last 
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p3.png 
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p5.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p7.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p9.png 

Expected O/P:

Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p1.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p3.png 
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p5.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p7.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p9.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p11.png
Prateek
  • 3,923
  • 6
  • 41
  • 79

1 Answers1

6

It is sorting lexicographically (the default sort method).

You'll have to define your own implementation of a natural sort order. The constructor of TreeMap allows you to pass in your custom comparator.

Community
  • 1
  • 1
Jeff Foster
  • 43,770
  • 11
  • 86
  • 103
  • Thanks for NaturalOrderComparator. `imageFilexxS= new TreeMap(new NaturalOrderComparator());` is constructor to my new `Treemap` now. But how do I use it to sort my existing map from it. – Prateek May 10 '13 at 10:52
  • Add the members from your existing map to that map (or just use the naturally ordered map across the code). – Jeff Foster May 10 '13 at 11:05
  • 1
    Yeah I did that , Thanks for your reply I learned something today. – Prateek May 10 '13 at 11:13