Java字符串排序(根据字节及字符长度进行排序)
因开发需要对一组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字符串排序(根据字节及字符长度进行排序)相关推荐
- java字符串转换成字节数组_将Java字符串转换为字节数组
我有一个要加密的字节数组,然后转换为字符串,以便可以传输. 当我收到字符串时,我必须将字符串转换回字节数组,以便可以对其进行解密. 我检查了接收到的字符串是否与发送的字符串(包括长度)匹配,但是当我使 ...
- java string最大长度_一个Java字符串中到底有多少个字符?
作者:鸟窝 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 (0),最大值是(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 65535个 ...
- 【Java】计算出准确的字符长度
java中: 1字符=2字节,1字节=8位 英文和数字占一个字节,中文占一个字符,也就是两个字节 在计算的字符串长度的时候,若有汉字,直接用String.length()方法是没法计算出准确的长度. ...
- 题目十:从字符串2中找出字符串1中的所有字符并按ASCII排序
给定两个字符串 从字符串2中找出字符串1中的所有字符 去重并按照ASCII码值从小到大排列 输入字符串1长度不超过1024 字符串2长度不超过100 字符范围满足ASCII编码要求,按照ASCII由小 ...
- 扫盲了!一个Java字符串中到底有多少个字符?
作者:鸟窝 来源:https://colobu.com/ 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 \u0000 (0),最大值是\uffff(65535), ...
- Java IO学习--(五)字节和字符数组
内容列表 从InputStream或者Reader中读入数组 从OutputStream或者Writer中写数组 在java中常用字节和字符数组在应用中临时存储数据.而这些数组又是通常的数据读取来源或 ...
- java 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案
2019独角兽企业重金招聘Python工程师标准>>> /*** 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案 ?* @author ChenG ...
- JAVA基础知识之字节和字符
一.字节的概念 1.计算机中的数据都是以二进制的形式进行存储和交换的,字节本质就是二进制,因此字节是最基本的储存单位 2.一个字节本质就是8位二进制,因此1个字节最小的值是0,最大的值是 ...
- c++ list排序_LeetCode.451-根据字符出现频率排序
根据字符出现频率排序 力扣leetcode-cn.com 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 参考了评论区 Felix8bit 的答案 解题思路: 先根据每个词出现的概率进行 ...
- Java传参是字节还是字符串好_深入分析java传参
概述 java中的参数传递问题可以根据参数的类型大致可以分为三类:传递基本类型,传递String类型,传递引用类型,至于最终是否可以归纳为值传递和引用传递,根据每个人的理解不同,答案不同,此处不做强调 ...
最新文章
- js_高级_表格排序案例---分别用面向过程和面向对象实现
- hive 语句总结_大数据分析工程师面试集锦4-Hive
- JavaSE(十五)——注解
- C++Saddleback search鞍背搜索的实现算法(附完整源码)
- Visual Studio Code 玩MS SQL
- uva11361数位dp
- Java web后端4 会话 Cookie Session
- c语言系统函数——目录操作
- vision应用教程中文版
- 主流百兆交换机芯片介绍
- sobel算子进行边缘检测
- SQL查询语句精华大全
- 蓝牙耳机哪种款式好用?目前口碑超赞的4款蓝牙耳机
- html学习 - 检测浏览器是否支持Canvas
- 小金鱼怎么不出来??
- Linux下服务器开发的必要准备
- ffmpeg mp3转pcm指令
- “守法规知礼让、安全文明出行”背后需要良好的交通环境支撑 | 聚焦守法知礼...
- vue表格某一列的显示与隐藏
- 高精度在线计时器(秒表)