final String symbol;\r
final Locale locale;\r
\r
- final Collator sortCollator;\r
+ private Collator sortCollator;\r
final Comparator<String> sortComparator;\r
\r
- final Collator findCollator;\r
+ private Collator findCollator;\r
final Comparator<String> findComparator;\r
\r
public Language(final String symbol, final Locale locale) {\r
this.symbol = symbol;\r
this.locale = locale;\r
\r
- this.sortCollator = Collator.getInstance(locale);\r
- this.sortCollator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);\r
- this.sortCollator.setStrength(Collator.IDENTICAL);\r
this.sortComparator = new Comparator<String>() {\r
public int compare(final String s1, final String s2) {\r
- return sortCollator.compare(textNorm(s1), textNorm(s2));\r
+ return getSortCollator().compare(textNorm(s1), textNorm(s2));\r
}\r
};\r
\r
- this.findCollator = Collator.getInstance(locale);\r
- this.findCollator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);\r
- this.findCollator.setStrength(Collator.SECONDARY);\r
this.findComparator = new Comparator<String>() {\r
public int compare(final String s1, final String s2) {\r
- return findCollator.compare(textNorm(s1), textNorm(s2));\r
+ return getFindCollator().compare(textNorm(s1), textNorm(s2));\r
}\r
};\r
\r
public String toString() {\r
return symbol;\r
}\r
+ \r
+ synchronized Collator getFindCollator() {\r
+ if (findCollator == null) {\r
+ findCollator = Collator.getInstance(locale);\r
+ findCollator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);\r
+ findCollator.setStrength(Collator.SECONDARY);\r
+ }\r
+ return findCollator;\r
+ }\r
+\r
+ synchronized Collator getSortCollator() {\r
+ if (sortCollator == null) {\r
+ sortCollator = Collator.getInstance(locale);\r
+ sortCollator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);\r
+ sortCollator.setStrength(Collator.IDENTICAL);\r
+ }\r
+ return sortCollator;\r
+ }\r
\r
// ----------------------------------------------------------------\r
\r