因开发需要对一组sku的图片进行排序,排序字段为图片名,排序方式为升序,

图片名命名规则: sku-图片数字序号.jpg  或 特殊字符-图片数字序号.jpg 或 中文.图片数字序号.jpg  等等  命名规则很乱,因为获取的是第三方的数据,但是不变的是图片数字序号前面的前缀,不同的sku中间的分隔符可能也会变,因此,我采用了将整个图片名进行排序,这样一组sku的图片只存在图片数字一个变量,其他为定量.

首先说为什么要根据字节加长度进行排序,因为如果仅仅根据字节进行排序,当图片数字序号不再是个位数时,字符串比较并不会考虑到个位,十位情况等等这些情况,例如  字符串3比字符串10的字节大,因此,我们需要添加上长度进行判断.

首先演示下不考虑长度的情况 排序结果

代码如下:

    @Testpublic void testGetStringByteLength(){Map<String,String> images = new HashMap<>();images.put("101003706-1.JPG","1");images.put("101003706-2.JPG","2");images.put("101003706-3.JPG","3");images.put("101003706-4.JPG","4");images.put("101003706-10.JPG","10");images.put("101003706-11.JPG","11");images.put("101003706-副本.png","6");images.put("101003706-5.JPG","5");Set<String> strings = images.keySet();List<String> s = new ArrayList<>();for (String key : strings){s.add(key);}System.out.println(s);s.sort(new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return o1.compareTo(o2);}});System.out.println(s);}

排序前:

排序后:

以下为考虑长度的情况 排序结果

代码如下:

    @Testpublic void testGetStringByteLength(){Map<String,String> images = new HashMap<>();images.put("101003706-1.JPG","1");images.put("101003706-2.JPG","2");images.put("101003706-3.JPG","3");images.put("101003706-4.JPG","4");images.put("101003706-10.JPG","10");images.put("101003706-11.JPG","11");images.put("101003706-副本.png","6");images.put("101003706-5.JPG","5");Set<String> strings = images.keySet();List<String> s = new ArrayList<>();for (String key : strings){s.add(key);}System.out.println(s);s.sort(new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {if (o1.length() == o2.length()){return o1.compareTo(o2);}else{if (o1.length() > o2.length()){return 1;}else{return -1;}}}});System.out.println(s);}

排序前:

排序后:

Java字符串排序(根据字节及字符长度进行排序)相关推荐

  1. java字符串转换成字节数组_将Java字符串转换为字节数组

    我有一个要加密的字节数组,然后转换为字符串,以便可以传输. 当我收到字符串时,我必须将字符串转换回字节数组,以便可以对其进行解密. 我检查了接收到的字符串是否与发送的字符串(包括长度)匹配,但是当我使 ...

  2. java string最大长度_一个Java字符串中到底有多少个字符?

    作者:鸟窝 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 (0),最大值是(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 65535个 ...

  3. 【Java】计算出准确的字符长度

    java中: 1字符=2字节,1字节=8位 英文和数字占一个字节,中文占一个字符,也就是两个字节 在计算的字符串长度的时候,若有汉字,直接用String.length()方法是没法计算出准确的长度. ...

  4. 题目十:从字符串2中找出字符串1中的所有字符并按ASCII排序

    给定两个字符串 从字符串2中找出字符串1中的所有字符 去重并按照ASCII码值从小到大排列 输入字符串1长度不超过1024 字符串2长度不超过100 字符范围满足ASCII编码要求,按照ASCII由小 ...

  5. 扫盲了!一个Java字符串中到底有多少个字符?

    作者:鸟窝 来源:https://colobu.com/ 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 \u0000 (0),最大值是\uffff(65535), ...

  6. Java IO学习--(五)字节和字符数组

    内容列表 从InputStream或者Reader中读入数组 从OutputStream或者Writer中写数组 在java中常用字节和字符数组在应用中临时存储数据.而这些数组又是通常的数据读取来源或 ...

  7. java 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案

    2019独角兽企业重金招聘Python工程师标准>>> /*** 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案 ?* @author ChenG ...

  8. JAVA基础知识之字节和字符

    一.字节的概念        1.计算机中的数据都是以二进制的形式进行存储和交换的,字节本质就是二进制,因此字节是最基本的储存单位 2.一个字节本质就是8位二进制,因此1个字节最小的值是0,最大的值是 ...

  9. c++ list排序_LeetCode.451-根据字符出现频率排序

    根据字符出现频率排序 力扣​leetcode-cn.com 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 参考了评论区 Felix8bit 的答案 解题思路: 先根据每个词出现的概率进行 ...

  10. Java传参是字节还是字符串好_深入分析java传参

    概述 java中的参数传递问题可以根据参数的类型大致可以分为三类:传递基本类型,传递String类型,传递引用类型,至于最终是否可以归纳为值传递和引用传递,根据每个人的理解不同,答案不同,此处不做强调 ...

最新文章

  1. js_高级_表格排序案例---分别用面向过程和面向对象实现
  2. hive 语句总结_大数据分析工程师面试集锦4-Hive
  3. JavaSE(十五)——注解
  4. C++Saddleback search鞍背搜索的实现算法(附完整源码)
  5. Visual Studio Code 玩MS SQL
  6. uva11361数位dp
  7. Java web后端4 会话 Cookie Session
  8. c语言系统函数——目录操作
  9. vision应用教程中文版
  10. 主流百兆交换机芯片介绍
  11. sobel算子进行边缘检测
  12. SQL查询语句精华大全
  13. 蓝牙耳机哪种款式好用?目前口碑超赞的4款蓝牙耳机
  14. html学习 - 检测浏览器是否支持Canvas
  15. 小金鱼怎么不出来??
  16. Linux下服务器开发的必要准备
  17. ffmpeg mp3转pcm指令
  18. “守法规知礼让、安全文明出行”背后需要良好的交通环境支撑 | 聚焦守法知礼...
  19. vue表格某一列的显示与隐藏
  20. 高精度在线计时器(秒表)

热门文章

  1. 软考初级程序员怎么备战好一点,有什么好的复习方法推荐吗?
  2. Matlab实现熵权法并计算权重和综合评分——附增完整代码和测试用例
  3. 张宇:【线性代数】公式汇总!
  4. json文件格式转换为png文件格式
  5. 营业执照生成_0跑动,3步注册,48小时拿证!金山发出首张全程电子化登记营业执照!...
  6. 【windows】Windows电脑怎么卸载服务/删除服务?
  7. 分享128个商务模板PPT模板,总有一款适合你
  8. Matlab伯德图如何修改相频特性的角度?终于解决了!
  9. linux-centos8安装oracle11
  10. 机器学习中的数据预处理方法与步骤