java汉字中首字母排序

最近博主做的项目中需要做一个wap版的手机通讯录,下午整理了下思路,发现这个用户名怎么排序啊?产品经理说就做成和手机通讯录类似的就行(心中一万头神兽飘过),好吧,既然提出来了那就要想办法做,作为一个程序员就应该百折不挠!!

首先博主想到的是从前端解决这个问题,所以索性找找资料,看看有没有现成的代码,找了一小会,没发现什么好的js能处理好这件事,哎。。。博主前端渣啊,好吧,转向后台来处理,前端你就等着专心的展示数据吧!

查阅相关api发现Comparator这个接口竟然有这个功能,真是省了好大一部分时间,下面贴出代码:

package demo;

import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;

public class Test {
	 public static void main(String[] args) {
	  // Collator 类是用来执行区分语言环境的 String 比较的,这里选择使用CHINA
	  Comparator comparator = Collator.getInstance(java.util.Locale.CHINA);
	  String[] arrStrings = { "aa","AA","11","小菜","镜花8水月90", "www.noreplace.com", "花无缺", "镜花7水月90","小傻" };
	  // 使根据指定比较器产生的顺序对指定对象数组进行排序。
	  Arrays.sort(arrStrings, comparator);
	  for (int i = 0; i < arrStrings.length; i++)
	   System.out.println(arrStrings[i]);
	 }
}

以上先定义比较器,使用汉字比较器,然后直接调用方法就OK了,是不是很方便?哈哈哈!

运行结果:

11
aa
AA
www.noreplace.com
花无缺
镜花7水月90
镜花8水月90
小菜
小傻

这里是使用ASCII码 进行比较的,大家有兴趣可以去了解下。。。

更多内容敬请关注我的个人博客:镜花水月的博客     转载请带上出处链接,谢谢,www.noreplace.com

时间: 2024-08-28 09:07:20

java汉字中首字母排序的相关文章

sql 汉字按照首字母排序

SQL mysql 我们的MySQL使用latin1的默认字符集,也就是说,对汉字字段直接使用GBK内码的编码进行存储,当需要对一些有汉字的字段进行拼音排序时(特别涉及到类似于名字这样的字段时),默认无法通过order by关键字正确排序. 经过网上查找,网上的办法大多是针对使用utf8字符集的数据库,主要的方法有: 1)直接转换字段为gbk,数据表某字段client_name的字符编码是utf8_general_ci; 比如: SELECT  *  FROM  `client_info_msg

mysql 中将汉字按照首字母排序

因为数据库中可以设定表的编码格式,不同编码格式下,中文的排序有区别,下面分别介绍常用编码下的排序方法. 1.如果数据表的某字段的字符编码是 utf8_general_ci,排序写法: ORDER BY CONVERT(表别名.字段名 USING gbk) COLLATE gbk_chinese_ci ASC; 例子 SELECT * FROM mg_clinic mc ORDER BY CONVERT(mc.`CLNAME` USING gbk) COLLATE gbk_chinese_ci A

sql语句按照汉字拼音首字母排序

oracle : 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值SCHINESE_RADICAL_M 按照部首(第一顺序).笔划(第二顺序)排序SCHINESE_STROKE_M 按照笔划(第一顺序).部首(第二顺序)排序SCHINESE_PINYIN_M 按照拼音排序,系统的默认排序方式为拼音排序 举例如下:表名为 dept ,其中name字段是中文,下面分别实现按照单位名称的笔划.部首和拼音排序.//按照笔划排序select * from dept order

vue中将汉字按照首字母排序,也适用于其他地方,但不适用多音字

1,.定义数组,可以是从后台传回的数据,也可以是自己写的数据(要json格式) 2.定义一个计算属性,用于将汉字排序(多音字的排序不推荐用这个) 3.在页面渲染

mysql 汉字根据首字母排序

1:如果数据库表字段的字符编码是latin1_swedish_ci select * from tablename order by birary(name) asc ;tablename:数据库表名name:排序字段名birary不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写 2:如果数据库表字段的字符编码是utf8_general_ci(常用) select * from tablename WHERE 1=1 order by

Java编程实现中英混合字符串数组按首字母排序的方法

在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序.例如: ? 1 2 3 4 5 6 7 String[] arrays = new String[] { "gyu", "sdf", "zf", "大同", "收到", "地方", "三等分", "的人", "反对高铁"

java获取汉字拼音首字母 --转载

在项目中要更能根据某些查询条件(比如姓名)的首字母作为条件进行查询,比如查一个叫"李晓明"的人,可以输入'lxm'.写了一个工具类如下: import java.io.UnsupportedEncodingException; /** * 取得给定汉字串的首字母串,即声母串 * Title: ChineseCharToEn * @date 2004-02-19 注:只支持GB2312字符集中的汉字 */ public final class ChineseCharToEn { priv

localeCompare按首字母排序汉字

sort() 方法用于对数组的元素进行排序. 如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字.比较函数应该具有两个参数 a 和 b,其返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值. 若 a 等于 b,则返回 0. 若 a 大于 b,则返回一个大于 0 的值. <script type="text/javascript"> function sortNum

数据库中获取汉字的首字母(网上某大神的)

create function fun_getPY(@str nvarchar(4000))returns nvarchar(4000)asbegindeclare @word nchar(1),@PY nvarchar(4000)set @PY=''while len(@str)>0beginset @word=left(@str,1)--如果非汉字字符,返回原字符set @[email protected]+(case when unicode(@word) between 19968 an