简单的实现排序,可以参考如下的代码
import java.text.Collatorimport java.util.Arrays
import java.util.Comparator
import java.util.Locale
public class PYDemo {
public static void main(String[] args) {
String[] names= {"赵z子z龙l","刘l备b","关g羽y","张z飞f"}
System.out.println("排序前"+Arrays.toString(names))
Comparator cpt = Collator.getInstance(Locale.CHINA)
Arrays.sort(names, cpt)
System.out.println("排序后"+Arrays.toString(names))
}
}
测试输出
排序前[赵z子z龙l, 刘l备b, 关g羽y, 张z飞f]排序后[关g羽y, 刘l备b, 张z飞f, 赵z子z龙l]
如果有一些非常用的汉字,生僻字等,建议使用一些jar包实现,比如pinyin4j
public class SortByChinese {//测试
public static void main(String[] args) {
String[] a1 = {"保定","何子安","于小云","刘帝","刘何保定子安","刘","刘娜","家强","刘博"}
getSortOfChinese(a1)
for (int i = 0 i < a1.length i++) {
System.out.println(a1[i])
}
}
/**
*
* @param a String[]
* @return String[]
*/
public static String[] getSortOfChinese(String[] a) {
// Collator 类是用来执行区分语言环境这里使用CHINA
Comparator cmp = Collator.getInstance(java.util.Locale.CHINA)
// JDKz自带对数组进行排序。
Arrays.sort(a, cmp)
return a
}
}public class SortByChinese {
//测试
public static void main(String[] args) {
String[] a1 = {"小二","张三","李四","王五","刘七"}
getSortOfChinese(a1)
for (int i = 0 i < a1.length i++) {
System.out.println(a1[i])
}
}
/**
*
* @param a String[]
* @return String[]
*/
public static String[] getSortOfChinese(String[] a) {
// Collator 类是用来执行区分语言环境这里使用CHINA
Comparator cmp = Collator.getInstance(java.util.Locale.CHINA)
// Arrays工具类对数组进行排序。
Arrays.sort(a, cmp)
return a
}
}
试试对你的问题是否有用
//按照中文第一个字母升序排列的实现import java.text.Collator
import java.util.Arrays
import java.util.Comparator
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Comparator<Object>com=Collator.getInstance(java.util.Locale.CHINA)
String[] newArray={"上海","天津","广州","杭州","辽宁","南京","武汉","北京","厦门","内蒙"}
Arrays.sort(newArray,com)
for(String i:newArray){
System.out.print(i+" ")
}
}
}