Java中如何java实现堆排序中文排序

扫一扫体验手机阅读
Java实现对中文字符串的排序功能实例代码
<span type="1" blog_id="1829788" userid='
分享到朋友圈
关注作者,不错过每一篇精彩JAVA实现如何对中文进行_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
JAVA实现如何对中文进行
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢关注51Testing
Java对象排序、中文排序、SortedSet排序使用和源码讲解
发表于: 09:33 &作者:xieyu_zy & 来源:51Testing软件测试网采编
推荐标签:
  在C、C++中有很多排序算法,但是通常排序算法不得不让程序员在写代码的过程中陷入对底层很多指针和位置的理解,不希望这样,所以排序大多可以由java帮你做掉,例如,你要对一个数组排序,就通过:Collections.sort(list)那么这个list就被排序了,排序最终调用的是Arrays.sort方法来完成的,所以数组自然是用Arrays.sort了,而SortedSet里面内部也有排序功能也是类似的方式的来实现的,只是内部调用了相关的方法来完成而已;SortedSet只是一个接口,实现类有很多,本文以TreeSet实现类作为例子。  而排序必然就存在对比大小,那么传递的信息,java是通过什么来对比大小的呢?compareTo这个来对比的,而内部对比过程中,需要将数据转换为Comparable来对比,所以你的对象就需要implementsComparable,并实现内部的方法compareTo,只要你的compareTo实现是你所想要的,那么排序必然是正确的,那么是否还有其他的方法,有的,排序的时候,允许你传入一个对比类,因为这样也可以减少一些空指针出现的可能性,传入的类需要实现:Comparator接口,实现其方法:compare类,虽然接口中还定义了equals方法基本不用管它,因为Object就已经实现了,并且内部排序中并没有用到equals方法来做排序。  下面开始使用实例分别来做中文排序、对象排序,并分别使用对象实现Comparable接口,以及单独定义排序对象实现Comparator接口来完成排序:  实例1(通过实现Comparator接口完成中文排序):import java.text.Cimport java.util.Aimport java.util.Cimport java.util.Cimport java.util.Lpublic class ChineseSortCompare {@SuppressWarnings("rawtypes")private final static Comparator CHINA_COMPARE = Collator.getInstance(java.util.Locale.CHINA);public static void main(String []args) {sortArray();sortList();System.out.println("李四".compareTo("张三"));//前者大于后者,则为正数,否则为负数,相等为0}@SuppressWarnings("unchecked")private static void sortList() {List&String&list = Arrays.asList("张三", "李四", "王五");Collections.sort(list , CHINA_COMPARE);for(String str : list) {System.out.println(str);}}@SuppressWarnings("unchecked")private static void sortArray() {String[] arr = {"张三", "李四", "王五"};Arrays.sort(arr, CHINA_COMPARE);for(String str : arr) {System.out.println(str);}}}  可以看到输出的结果都是一样的,当然String本身有compare方法,而且其本身也是实现了Comparable接口的,所以你如果不放入CHINA_COMPARE来进行处理的话,将会默认按照String自己的compareTo来做排序,排序的结果自然不是你想要的,当然英文应该是你想要的。  实例2(通过外部定义Comparator来完成对象排序):  这里首先要构造一个对象的类,为了简单,我们就用两属性,定义一个UserDO这样一个类,描述如下:public class UserDO {protected Sprotected Spublic UserDO() {}public UserDO(String name , String email) {this.name =this.email =}public String getName() {}public void setName(String name) {this.name =}public String getEmail() {}public void setEmail(String email) {this.email =}}  定义了两个属性为name和email,此时我们想要按照name了排序,那么我们定义排序的类如下:  import java.text.C  import java.util.C  public class UserDOComparator implements Comparator&UserDO& {  Collator cmp = Collator.getInstance(java.util.Locale.CHINA);  @Override  public int compare(UserDO userDO1, UserDO userDO2) {  return cmp.compare(userDO1.getName(), userDO2.getName());  }  }  此时可以看出我们实现了compare方法,是使用拼音排序的,然后我们来模拟一些数据验证结果:import java.util.Aimport java.util.Cimport java.util.Limport java.util.SortedSimport java.util.TreeSpublic class SortUserListTest {private final static UserDOComparator USER_COMPARATOR = new UserDOComparator();public static void main(String []args) {sortUserDOArray();sortUserDOList();sortUserBySortedSet();}private static void sortUserBySortedSet() {SortedSet&UserDO&userSet = new TreeSet&UserDO&(USER_COMPARATOR);userSet.add(new UserDO("张三" , ""));userSet.add(new UserDO("李四" , ""));userSet.add(new UserDO("王五" , ""));for(UserDO userDO : userSet) {System.out.println(userDO.getName());}}private static void sortUserDOList() {List&UserDO&list = Arrays.asList(new UserDO("张三" , ""),new UserDO("李四" , ""),new UserDO("王五" , ""));Collections.sort(list , USER_COMPARATOR);for(UserDO userDO : list) {System.out.println(userDO.getName());}}private static void sortUserDOArray() {UserDO []userDOArray = new UserDO[] {new UserDO("张三" , ""),new UserDO("李四" , ""),new UserDO("王五" , "")};Arrays.sort(userDOArray , USER_COMPARATOR);for(UserDO userDO : userDOArray) {System.out.println(userDO.getName());}}}  根据这些输入,你可以看到它的输出和实际想要的按照名称的拼音排序是一致的,那么有人会问,如果我按照两个字段排序,先按照一个字段排序,再按照另一个字段排序该怎么办,其次如果是倒叙应该是如何操作,其实倒叙来讲只需要在compare方法中将原有的输出改成相反数就可以了,compare得到的结果为正数、负数、或0,若为正数,代表第一个数据比第二个大,而负数相反,为0的时候代表相等;而多字段排序也是如此,通过第一层排序后得到结果,看是否是0,如果是0,那么就再按照第二个字段排序即可,否则就直接返回第一层返回的结果,两者混合应用以及多层排序自然就实现了。
搜索风云榜
51Testing官方微信
51Testing官方微博
测试知识全知道当前位置: &
java中文排序
伟创万能阅读器是一款体积小功能强大的阅读工具,支持PDF、word,excel、ppt,chm,txt,java
Jetty是一个开放源码的HTTP服务器软件,100%用Java语言编写。Jetty是一个开源的servlet
现在最好用的JAVA集成开发环境!
Ant是一个类似make,但是是基于Java的build的工具,用来编译/运行/测试java程序。构建、包
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个
JDK是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一堆Java工具和Java基础
V13.2可以直接录入单据金额,计算单价,商品选择窗口自动排序《方可仓库管理软件
V13.2可以直接录入单据金额,计算单价,商品选择窗口自动排序《方可进销存普及版
V13.2可以直接录入单据金额,计算单价,商品选择窗口自动排序《方可进销存精简版
V13.2可以直接录入单据金额,计算单价,商品选择窗口自动排序《方可进销存高级版
V13.2可以直接录入单据金额,计算单价,商品选择窗口自动排序软件简介:方可库存
V13.2可以直接录入单据金额,计算单价,商品选择窗口自动排序《方可销售单打印软
Xshell是一个功能强大的终端模拟器,支持SSH、SFTP、telnet,rlogin和串行。人们可以使用它
Xmanager是市场领先的PCX服务器,它能够带来Windows平台下强力的虚拟应用技术,能够
PDF修改器是一款可以对PDF文件进行随意修改的PDF修改软件.其中包括修改PDF文字
软件简介:迅捷PDF图片提取工具是一款专业提取PDF文件中所有图片的免费工具,支
【亿愿中外文科研资料检索下载管理】检索下载CNKI知网中文期刊数据库、中国优秀
【亿愿中文期刊论文下载管理】检索下载CNKI知网中文期刊数据库、中国优秀博硕士
创意门户管理平台是在新禾科技有着多年门户网站建设应用的创意信息发布平
java语言开发,springmvc架构oracle数据库,页面程序分离多重审核机制,后台逻辑server
小编推荐-java中文排序[Java]实现按中文首字母排序
要实现&按中文首字母排序&操作,可以使用java.util包下的Arrays类的sort()函数。
Arrays类包含用来操作数组(比如排序和搜索)的各种方法。
比如对于排序操作的sort()函数,重载了多种静态函数以适应不同情况下的需要。
以下,我们应用最后一个重载函数来实现&按中文首字母排序&:
sort(T[] a, int fromIndex, int toIndex, Comparator c)
根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。
代码举例:
package com.app.
import java.text.C
import java.util.A
import java.util.C
* java实现按中文首字母排序的方式
public class TestDemo01 {
public static void main(String[] args) {
// Collator 类是用来执行区分语言环境的 String 比较的,这里选择使用CHINA
Comparator comparator = Collator.getInstance(java.util.Locale.CHINA);
String[] arrStrings = { &乔峰&, &郭靖&, &杨过&, &张无忌&,&韦小宝& };
// 使根据指定比较器产生的顺序对指定对象数组进行排序。
Arrays.sort(arrStrings, comparator);
for (int i = 0; i & arrStrings. i++)
System.out.println(arrStrings[i]);
执行结果:
至此,我们即完成了&按中文首字母排序&操作。}

我要回帖

更多关于 python实现冒泡排序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信