Java 如何对中文排序

2023-10-31

字符串的 compareTo() 方法是不能对中文排序的,下面这个例子中的中文使用 compareTo() 方法排序后得到的是乱序

List<String> stringList = Arrays.asList("李四", "阿毛", "老王", "小李", "小董");
// 按照字符串排序
stringList.sort((x,y)->x.compareTo(y) );
stringList.forEach(System.out::println);

//输出结果
小李
小董
李四
老王
阿毛

使用字符串排序得到的结果并没有按照中文字典排序,因为字符串的 compareTo() 方法是按照 ASCII 码比较的,所以中文排序结果会是乱序。Java JDK 中提供了一个专门处理不同自然语言搜索和排序的类:Collator

// 可以通过静态方法 getInstance() 和 Locale的静态变量来构建处理不同自然语言的类
Collator instance = Collator.getInstance(Locale.CHINA);

示例

List<String> stringList = Arrays.asList("李四", "阿毛", "老王", "小李", "小董");
// 按照中文排序
stringList.sort((x,y)->{
    Collator instance = Collator.getInstance(Locale.CHINA);
    return instance.compare(x, y);
} );
System.out.println("------------------------------------");
stringList.forEach(System.out::println);

//输出结果
阿毛
老王
李四
小董
小李
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 如何对中文排序 的相关文章

随机推荐

  • hbase集群在启动的时候报错:JAVA_HOME is not set and Java could not be found

    hbase集群在启动的时候报错 JAVA HOME is not set and Java could not be found 出现这种错误 一般应该是hbase下conf文件下的hbase env sh文件中的java home的环境变
  • 信息学奥赛一本通 1224:最大子矩阵

    题目链接 ybt 1224 最大子矩阵 ybt 1282 最大子矩阵 OpenJudge 2 6 1768 最大子矩阵 洛谷 P1719 最大加权矩形 题目考点 1 动态规划 线性动规 最大子段和 2 前缀和 解题思路 求二维最大子矩阵和
  • Android扫描银行卡获取银行卡号

    card io开源的银行卡扫描的三方库真的是很好用啊 首先需要在你的module的gradle的依赖文件中添加依赖 compile io card android sdk 5 5 1 2 清单文件中加入如下Activity
  • 腾讯云Linux服务器如何安装Nginx?(CentOS 8)

    安装及配置 Nginx 执行以下命令 安装 Nginx 说明 本文以安装 Nginx 1 18 0 为例 您可通过 Nginx 官方安装包 获取适用于 CentOS 8的更多版本 dnf y install http nginx org p
  • 跨站请求伪造CSRF(Cross-site request forgery)

    目录 一 什么是CSRF 二 可能存在CSRF攻击的三个条件 一个相关的动作 基于 Cookie 的会话处理 没有不可预测的请求参数 二 常见的CSRF攻击 1 CSRF令牌的验证取决与请求方法 2 CSRF令牌的验证取决与令牌是否存在 3
  • 基于C#开发的,支持多平台二维图表开源编辑器

    推荐一个基于C 开发的 支持多平台的二维图表开源编辑器 01 项目简介 Core2D是一个支持跨平台 多平台的应用程序 内置wyswig矢量图形编辑器 可用于数据驱动生成二维图 1 wyswig矢量图形编辑器 内置了一个强大的图形编辑器 它
  • 从小白到高手---api接口和drf(Django Rest_Framework)使用超详解

    1 api接口 为了在团队内部形成共识 防止个人习惯差异引起的混乱 我们需要找到一种大家都觉得很好的接口实现规范 而且这种规范能够让后端写的接口 用途一目了然 减少双方之间的合作成本 目前市面上大部分公司开发人员使用的接口服务架构主要有 r
  • Java IO File类中的知识点

    public class Demo3 public static void main String args TODO Auto generated method stub test1 1 名称 test2 2 判断信息 test3 创建删
  • ggplot2杂记

    ggplot2杂记 本文是我在阅读 lt
  • Quartz 之 Job参数 和 Job状态

    项目地址 https github com yuleiqq quartz example tree master quartz study 此示例旨在演示如何将运行时参数传递给quartz作业 以及如何维护作业中的状态 程序将执行以下操作
  • 自学Python真的可以吗?

    自学当然可以学成功python了 但是前提是你需要认真去学 而不是三天打渔两天晒网的 因为python初学很容易 稍微过几天忘记也很容易 所以一定要坚持学习 并且通过平时多加练习来熟练掌握各个知识点 一 学习建议 Python涉及到的学习方
  • 如何解决上传IPA反馈ERROR ITMS-90189版本号重复问题

    在使用App Store Connect上架iOS应用时 如果上传IPA文件时出现ERROR ITMS 90189版本号重复问题 可能是因为该版本号已经被其他应用占用 为了解决这个问题 您可以遵循以下步骤 1 在App Store Conn
  • Qt_shadow build

    就是构建生成的目录和源代码目录分开 比如工程目录叫test 则编译器自动生成一个test build desktop目录存放所有编译过程中生成的文件 当然与之类似的还有在pro文件中添加 MOC DIR temp moc RCC DIR t
  • YOLOv3 从入门到部署(四)YOLOv3模型导出onnx(基于pytorch)

    YOLOv3 从入门到部署 四 YOLOv3模型导出onnx 基于pytorch 文章目录 YOLOv3 从入门到部署 四 YOLOv3模型导出onnx 基于pytorch 目录 概述 pytorch导出onnx采坑 转onnx代码 使用D
  • postgresql ERROR: could not load library plpgsql.so的处理

    1 创建function时遇到ERROR could not load library plpgsql so 多半是因为使用了旧的版本 2 查看postgresql版本 3 寻找对应版本的so档案替换目前使用的plpgsql so 4 大功
  • Linux系统分区方案

    我个人服务器配置 24G内存 1T固态 2T机械 固态硬盘 1 主分区 Swap area 这个是根据系统内存的大小设置的 我这里内存是24G 所以给了 24 1024 2 主分区 boot 我这里给了 5120 3 逻辑分区 EFI 我这
  • Spring 对象XML映射

    OXM简介 我们都知道对象关系映射 ORM 用来将Java对象和关系型数据库的数据进行映射 Spring也提供了一套类似的映射机制 用来将Java对象和XML文件进行映射 这就是Spring的对象XML映射功能 有时候也成为XML的序列化和
  • 计算机组成原理期末总结

    文章目录 写在前面 1 计算机系统概论 知识点 习题 2 运算方法和运算器 知识点 习题 3 多层次的存储器 知识点 习题 4 指令系统 知识点 习题 5 中央处理器 知识点 习题 6 总线系统 知识点 习题 7 外存与IO设备 知识点 习
  • JS-SDK与二次分享问题

    先说说背景知识 1 JS SDK的用途 调用拍照 选图 支付 分享 定位功能 微信开放这些能力给开发者 要对开发者进行鉴权 鉴权的时候需要签名 签名需要票据 随机字符串 时间戳 网址 票据需要调用微信的一个接口生成 比较麻烦的参数票据 票据
  • Java 如何对中文排序

    字符串的 compareTo 方法是不能对中文排序的 下面这个例子中的中文使用 compareTo 方法排序后得到的是乱序 List