/*

思路:由于java字符串排序默认为按Unicode编码排序,若想简体汉字按拼音排序,就要按GBK编码排序;首先建立方法比较两个字符串,将字符串用GBK编码转成byte数组,然后比较两个数组对应下标的大小关系,得出两个字符串的大小关系,然后按照这个比较大小的规则对整个集合进行排序。

*/

import java.io.UnsupportedEncodingException;
import java.util.List;
public class Tool {
 /**
  * 将字符串集合按GBK编码(简体字按拼音顺序)排序
  * 常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等
  * java默认Unicode,系统默认GBK
  */
 public static int compare(String str1,String str2){
  try {
   byte[] b1 = str1.getBytes("GBK");
   byte[] b2 = str2.getBytes("GBK");
   int l1=b1.length;
   int l2=b2.length;
   int l=Math.min(l1, l2);
   int k=0;
   while(k<l){
    byte bt1=b1[k];
    byte bt2=b2[k];
    if(bt1!=bt2)
     return bt1-bt2;
    k++;
   }
   return l1-l2;
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
  }
  return 0;
 }
 public static void sort(List<String> list){
  int size=list.size();
  if(size<=1)
   return;
  for(int i=1;i<size;i++){
   for(int j=i;j>0;j--){
    if(compare(list.get(j), list.get(j-1))<0){
     String temp=list.get(j);
     list.set(j, list.get(j-1));
     list.set(j-1, temp);
    }else{
     break;
    }
   }
  }
 }
}

java语言将一个字符串集合按GBK编码(简体中文按拼音顺序)排序相关推荐

  1. Java中获取GBK编码汉字的拼音首字母(包括生僻字)

    Java中获取GBK编码汉字的拼音首字母(包括生僻字) 前言 代码 结果 前言 网上关于Java中获取汉字的拼音首字母的方法很多,但大多基于GB2312的汉字所属编码位置判断方法,现有一种基于GBK编 ...

  2. java电话键盘字母数字转换_用Java语言将一个键盘输入的数字转化成中文输出

    用Java语言将一个键盘输入的数字转化成中文输出 将一个键盘输入的数字转化成中文输出(例如:输入:1234567 输出:一百二拾三万四千五百六拾七)用java语言实现,,请编一段... 将一个键盘输入 ...

  3. mysql数据库sql汉字数字排序_MYSQL数据库UTF8编码使用汉字拼音第一个字母排序的方法...

    MYSQL数据库UTF8编码使用汉字拼音第一个字母排序的方法 今天做网站时遇到了这样一个问题,有一个标签数据库,在管理标签时想按标签列的汉字拼音的第一个字母排序,这样人工查找的时候就很快可以看到: 于 ...

  4. c语言集合除去相同元素,使用C语言去掉字符串集合重复元素

    有一种最直接的方法可以去掉一个集合中重复的元素,这种方法据说就是"交给下面去做",然而有时候,你自己动手去做一下也是不错的.如果交给下面去做,最直接的选择就是使用map,在java ...

  5. java语言基础及集合基础大总结

    好好学java java知识分享/学习教程免费分享 关注 精彩内容 你所需要的java全套视频教程 你所需要的java电子图书 你所需要的大数据视频教程 你所需要的java练习项目 如 / 诗 近半个 ...

  6. java语言特点 字符串不变_面试必问:Java中String类型为什么设计成不可变的?

    这几天在各大平台上都看到过这样一些帖子,全都是关于String类型对象不可变的问题,当然现在也是找工作的准备时期,因此花了一部分时间对其进行整理一下. 想要完全了解String,在这里我们需要解决以下 ...

  7. [转载] 【Java】将一个字符串的字符排序,按ASCII表的顺序从小到大

    参考链接: 在Java中搜索字符串中的字符和子字符串 将一个字符串的字符按ASCII表的顺序从小到大排序,如将字符串"asdafxcvMADb"排序为"ADMaabcdf ...

  8. java 拼音 排序_java代码按照中文拼音顺序排序_集合按照本地语言排序

    java代码中集合list需要前段排序,如何安装中文字母顺序排,或者安装日语顺序排序 需要使用Collator类 代码如下: import java.text.Collator; import jav ...

  9. 对List集合中每个对象元素按时间顺序排序

    首先创建一个实体类 package com.huawei.Test;import java.util.Date;/*** @author h84250472* @title: User$* @desc ...

  10. Java8——Stream流操作List排序_List集合中每个对象元素按时间顺序排序

    一个学生类的实体类 @Data public class Student {private Long id;private String name;private int age;private Do ...

最新文章

  1. java与SPARK的使用的一个类似文章
  2. Letters比赛第六场1004 Unit Fraction Partition解题报告
  3. java里有没有 0的使用_请问有没有人有零基础Java基础习题?
  4. Java 14 中令人期待的五大新特性!
  5. div和div之间画横线,如何在两个div之间画一条线?
  6. matlab slice
  7. dlna和miracast可以共存吗_同屏镜像功能哪家强?DLNA miracast等技术解读
  8. matlab中阶跃函数算卷积,与冲激函数、阶跃函数的卷积.ppt
  9. 计算机设备如何巡检,计算机联锁设备巡检作业指导书.pdf
  10. Java中的23个设计模式 【结构型模式】 中的 【装饰模式】
  11. 《Sony Vegas Pro 12标准教程》—— 2.6 添加背景音乐
  12. android 仿写开发者头条,android高仿今日头条富文本编辑(发布文章)
  13. vue基础:ElementUI的表单
  14. IComponent2 Interface 学习
  15. Linux系统时间同步方法小结
  16. 各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式
  17. 如何用建好的stm32模板来创建Free-Rtos系统
  18. linux c代码更改时间间隔,在特定的时间间隔后发送控制c到一个linux命令?
  19. SpringMVC框架个人笔记之响应数据、文件上传
  20. 【Java】认识NPE问题 - 空指针异常

热门文章

  1. oracle数据文件大小
  2. 读懂Windows的“虚拟内存”为你量身定制
  3. hdu 5336 XYZ and Drops
  4. php制作特效文字,PPT制作文字特效 PPT特效文字制作教程
  5. bios设置raid启动模式Linux,RAID BIOS检测硬盘以及设置RAID模式
  6. php怎么更换图片背景的软件,如何更换照片背景
  7. matplotlib色彩(colors)之图表数据系列默认配色(默认色彩循环)
  8. 抖音怎么发起挑战 发起挑战怎么玩
  9. 机器学习8-误差逆传播算法BP的认识
  10. View和ViewGroup的区别