2010-09-01 57 views
4

我正在製作一個Java應用程序,它從SQLite接收一些名稱並將它們放在列表框中。 事情是我希望它按照字母升序的方式準確地排序(以葡萄牙語爲準)。按字母順序排列時忽略變音符

這些條目,例如:

貝塔 有田 安娜

應當責令爲:

安娜 有田 貝塔

但由於它在一些ASCII訂購訂單, 「重音」字符將在最後被拋出,而不是在它們對應的字母下。

結果: 安娜 貝塔 有田

我該如何解決這個問題?編輯:我的意思是解決與Java本身的問題,而不是與SQlite改進

在此先感謝。

回答

6

您可以先將名稱讀入常規List<String>,然後使用Collections.sort()對列表進行排序。要指定區域設置敏感的排序,請使用Collator

E.g

List<String> names = ... read names from db; 
Collator collator = Collator.getInstance(new Locale("pt")); 
Collections.sort(names, collator); 

的名字將被按字母順序排序。您可能需要使用collat​​or.setStrength(SECONDARY)來讓它「忽略」由於重音而產生的差異。行爲是語言特定的,所以我不能肯定地說。

+0

你是上帝先生。謝謝! – Qosmo 2010-09-01 11:16:47