Prateek
Prateek

Reputation: 4013

TreeMap doesn't sort properly in this case

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

Upvotes: 1

Views: 93

Answers (1)

Jeff Foster
Jeff Foster

Reputation: 44746

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.

Upvotes: 6

Related Questions