按匈牙利语字母顺序对匈牙利语字符串列表进行排序
2022-09-04 21:45:07
我目前正在处理匈牙利人的一些数据。我必须对匈牙利语字符串列表进行排序。
根据此归类序列页面
匈牙利语的字母顺序为:A=Á, B, C, CS, D, DZS, E=É, F, G, GY, H, I=Í, J, K, L, LY, M, N, NY, O=Ó, Ö=Ő, P, Q, R, S, SZ, T, TY, U=Ú, Ü=Ű, V, W, X, Y, ZS
因此,元音被处理成相同的(A = Á,...),因此在结果中,您可以使用Collator获得一些类似的元音:
Abdffg
Ádsdfgsd
Aegfghhrf
到这里,没有问题:)
但现在,我需要根据匈牙利字母排序
A Á B C Cs D Dz Dzs E É F G Gy H I Í J K L Ly M N Ny O Ó Ö Ő P (Q) R S Sz T Ty U Ú Ü Ű V (W) (X) (Y) Z Zs
A 被认为与 Á 不同
使用力量从不会改变输出中的顺序。A 和 Á 仍然混为一谈。Collator
是否有任何语言/技巧可以根据匈牙利语字母顺序对字符串列表进行排序?
到目前为止,我正在做的是:
- 排序方式为 C/C、D、DZ、DZS...已正确排序
Collator
- 通过根据地图比较每个单词的第一个字符来再次排序
这看起来太麻烦了,任务没有?
List<String> words = Arrays.asList(
"Árfolyam", "Az",
"Állásajánlatok","Adminisztráció",
"Zsfgsdgsdfg", "Qdfasfas"
);
final Map<String, Integer> map = new HashMap<String, Integer>();
map.put("A",0);
map.put("Á",1);
map.put("E",2);
map.put("É",3);
map.put("O",4);
map.put("Ó",5);
map.put("Ö",6);
map.put("Ő",7);
map.put("U",8);
map.put("Ú",9);
map.put("Ü",10);
map.put("Ű",11);
final Collator c = Collator.getInstance(new Locale("hu"));
c.setStrength(Collator.TERTIARY);
Collections.sort(words, c);
Collections.sort(words, new Comparator<String>(){
public int compare(String s1, String s2) {
int f = c.compare(s1,s2);
if (f == 0) return 0;
String a = Character.toString(s1.charAt(0));
String b = Character.toString(s2.charAt(0));
if (map.get(a) != null && map.get(b) != null) {
if (map.get(a) < map.get(b)) {
return -1;
}
else if (map.get(a) == map.get(b)) {
return 0;
}
else {
return 1;
}
}
return 0;
}
});
感谢您的输入