Question (2)
If I have unicode values in this property files in various languages (however only one language per file) in "/u" format will the sorting still be done ok? Well, the /uXXXX will be translated into the char it represents as soon as the Properties is loaded, so that's not an issue. However if you're using other languages than English, sorting can be more complex.
String's compareTo() method implements a "natural order" which simply sorts according to Unicode value of each letter. However the Unicode order isn't always what makes sense in the language you're dealing with. (Particularly for the asian languages in the CJK grouping, where some of their characters are in one of the CJK common areas, and others are in a block specifically for that language. In fact even in English, you may not like the natural sort. E.g. if you want to ignore case and have "Adam" come between "ace" and "and" - String doesn't do that by default.
I believe you need to use a
Collator here - an object which knows how to sort strings according to a particular set of rules. You can create a Collaor and have your Comparator call the Collator to compare the two values, rather than the compareTo() used above. See the
Java Tutorial on comparing strings with internationalization for more info.