我正在製作一個Java應用程序,它從SQLite接收一些名稱並將它們放在列表框中。 事情是我希望它按照字母升序的方式準確地排序(以葡萄牙語爲準)。按字母順序排列時忽略變音符
這些條目,例如:
貝塔 有田 安娜
應當責令爲:
安娜 有田 貝塔
但由於它在一些ASCII訂購訂單, 「重音」字符將在最後被拋出,而不是在它們對應的字母下。
結果: 安娜 貝塔 有田
我該如何解決這個問題?編輯:我的意思是解決與Java本身的問題,而不是與SQlite改進
在此先感謝。
我正在製作一個Java應用程序,它從SQLite接收一些名稱並將它們放在列表框中。 事情是我希望它按照字母升序的方式準確地排序(以葡萄牙語爲準)。按字母順序排列時忽略變音符
這些條目,例如:
貝塔 有田 安娜
應當責令爲:
安娜 有田 貝塔
但由於它在一些ASCII訂購訂單, 「重音」字符將在最後被拋出,而不是在它們對應的字母下。
結果: 安娜 貝塔 有田
我該如何解決這個問題?編輯:我的意思是解決與Java本身的問題,而不是與SQlite改進
在此先感謝。
您可以先將名稱讀入常規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);
的名字將被按字母順序排序。您可能需要使用collator.setStrength(SECONDARY)來讓它「忽略」由於重音而產生的差異。行爲是語言特定的,所以我不能肯定地說。
將java.text.Collator傳遞給您的字符串排序例程。
你是上帝先生。謝謝! – Qosmo 2010-09-01 11:16:47