【算法】实现对中文字符串数组按照音序排列
2008-11-21 18:27
615 查看
public class SortComparator implements Comparator{
public int compare(Object o1,Object o2) {
try{
byte[] buf1 = ((String) o1).getBytes("unicode");
byte[] buf2 = ((String) o2).getBytes("unicode");
int size = Math.min(buf1.length, buf2.length);
for (int i = 0; i < size; i++) {
if (buf1[i] < buf2[i])
return -1;
else if (buf1[i] > buf2[i])
return 1;
}
return buf1.length - buf2.length;
}catch(UnsupportedEncodingException ex) {
return 0;
}
}
}
调用:
String[] str = {"北京","中国","亚运会"};
Arrays.sort(str,new SortComparator());
for(int len=0;len<str.length;len++){
System.out.println(str[len]);
}
public int compare(Object o1,Object o2) {
try{
byte[] buf1 = ((String) o1).getBytes("unicode");
byte[] buf2 = ((String) o2).getBytes("unicode");
int size = Math.min(buf1.length, buf2.length);
for (int i = 0; i < size; i++) {
if (buf1[i] < buf2[i])
return -1;
else if (buf1[i] > buf2[i])
return 1;
}
return buf1.length - buf2.length;
}catch(UnsupportedEncodingException ex) {
return 0;
}
}
}
调用:
String[] str = {"北京","中国","亚运会"};
Arrays.sort(str,new SortComparator());
for(int len=0;len<str.length;len++){
System.out.println(str[len]);
}
相关文章推荐
- 实现对中文字符串数组按照音序排列
- java 中文字符串数组按照音序排列
- java 中文字符串数组按照音序排列
- 按照拼音对数组中的中文字符串排序的算法
- 一些常用算法[数组全排列算法,单链表反转(递归实现),字符串反转,桶排序]
- ios 按照拼音对数组中的中文字符串排序的算法
- 几个关于串的小算法题:最小K个数、连续子数组的最大和、字符串全排列求法、数组循环移位
- 求数组全排列算法的递归实现
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 字符串算法——数组或字符串全排列(Permutations)
- 字符串算法——有重复字符的数组或字符串全排列(Permutations II)
- 字符串排列算法的实现
- 字符串数组元素排列与组合的Java递归实现
- 全排列算法数组实现and全排列算法
- 数组全排列算法(一)字符串数组全排列——逐个追加组合算法
- 实用算法实现-第 8 篇 后缀树和后缀数组 [3 两个字符串的最长公共子串]
- C++模板数组实现有序数组的排列合并算法
- 关于算法—— 一维字符串数组之间组合问题的C#实现
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的