首先说下字符串的压缩的大概意思:比如一字符串"asdfjsdffffffssddsfsdssss",其中有很多相邻的字符是相同的,那么可以通过一个合并,并记录个数的方式,来进行压缩,从而减少字符串的长度。

实现的方法有很多,下面主要讲解通过Map集合来实现这个功能:

学过java的人都知道,其实字符串的底层是由char数组来维持的,所以我们要先把字符串转换成字符数组。利用Map的键值对的特性,来存储相应的字符和对应的个数。代码如下:

public static String stringCondense(String str) {

Map map = new LinkedHashMap();

char[] charArray = str.toCharArray();

char start = charArray[0];

map.put(start + ":" + 0, 1);

String key = start + ":" + 0 ;

for (int i = 1; i < charArray.length; i++) {

if (charArray[i] == charArray[i - 1]) {

int value = map.get(key);

value++;

map.put(key, value);

} else {

key = charArray[i] + ":" + i;

map.put(charArray[i] + ":" + i, 1);

}

}

String result = "";

for (String s : map.keySet()) {

if (map.get(s) != 1) {

result = result + s.split(":")[0] + map.get(s);

} else {

result = result + s.split(":")[0];

}

}

return result;

}

有几个小注意点:

1.推荐使用LinkedMapHashMap,使用HashMap会有料想不到的收获哦!

2.因为map中key唯一,所有key最好加上当前位置,这样不会覆盖,同时也可以查看原来字符数组的排列顺序。

3.这个代码十分简单,如有不足,请多多包涵!!!

java压缩传输_简单实现字符串的压缩,减轻传输压力相关推荐

  1. 图片压缩软件_简单易用的图片压缩软件gt;给图片减肥

    正文共816字,预计阅读时间为:3分钟 无论你是设计师 自媒体.办公编辑人员 还是学生 很多时候都会遇到 图片文件体积太大 导致无法上传 或传输太过耗时耗流量的问题 这时我们就需要 一款免费图片压缩工 ...

  2. java ear包_简单介绍Java 的JAR包、EAR包、WAR包区别

    原标题:简单介绍Java 的JAR包.EAR包.WAR包区别 WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.War专 ...

  3. java for 死循环_简单的java死循环 java中的死循环问题

    java中死循环是什么意思 循环一次不再循环是死循环java中死循环是什么意思 循环一次不再循环是死循环 还是不断循环才是死JAVA中死循环的意思是,不停地循环,不会终止,例如: for (int i ...

  4. java ssh客户端_简单的Java SSH客户端

    java ssh客户端 可以使用jcabi-ssh在Java中通过几行代码通过SSH执行shell命令: String hello = new Shell.Plain(new SSH("ss ...

  5. java 邮件 超链接_将Excel范围中的超链接传输到Outlook电子邮件

    我正在尝试从excel范围(rng 1到6)创建一个电子邮件,其中包含A列和D列中每个单元格的超链接 . 以下是为这些范围创建超链接的代码示例 . 一切正常 . ActiveSheet.Hyperli ...

  6. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  7. java mapreduce程序_简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行...

    [TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...

  8. java服务器代码_简单java服务器

    [java]代码库import java.io.InputStream; import java.io.OutputStream; import java.net.*; public class Ch ...

  9. c++判断一个字符串里面有特殊符号_简单动态字符串(SDS)

    在 Redis 里面,C 字符串只会作为字符串字面量用在一些无须对字符串值进行修改的地方,比如打印日志.当 Redis 需要对一个被修改的字符串操作时,Redis 会使用  SDS 来表示字符串值,比 ...

最新文章

  1. LoadRunner之二“集合点”
  2. U3D 飞机大战(MVC模式)解析--面向对象编程思想
  3. lora发射和接收原理_四个要点,帮你搞定LoRa天线匹配电路
  4. 活动结束|金融圈第19期分享:数据系统如何防范金融非统性风险?
  5. 移动端 flexible.js 布局详解
  6. c++ float转double_萌新求教//c语言float和double哪个算得快?
  7. R︱Linux+Rstudio Server尝鲜笔记(打造最佳Rstudio体验+报错的解决方案)
  8. iOS 15 新功能:在照片“回忆”中,搭配上喜欢的音乐
  9. 25. (附加)二叉树的所有路径(C++版本)
  10. (转)style,currentStyle,getComputedStyle的区别和用法
  11. cookie,session与token的真正区别
  12. 怎么改java游戏_jar游戏按键修改,怎么修改jar游戏按键
  13. 最新好用的服装零售进销存软件排行榜
  14. 屏幕快照之旅:Android 4.2 Jelly Bean的10个新功能
  15. 计算机一级改扩展名,怎么改文件扩展名,教您电脑win7改文件扩展名的方法
  16. 二、从零开始学逆向之XCTF-logmein
  17. java缺失_Java中找出缺失的数字
  18. 字体图标的下载与使用
  19. 红帽为什么要加入阿里云的朋友圈?
  20. 如何快速制作一个H5单页面网站

热门文章

  1. 2020-python小工能
  2. django小结191107
  3. dj电商-模型类设计-1.x-订单模块表
  4. Python之路(第十七篇)logging模块
  5. python_day12_html
  6. VR版《五十度黑》尺度大?心疼被套路的观众
  7. java 枚举类型知识点记录
  8. POJ1273 Drainage Ditches(最大流基础题)
  9. JavaScript本地存储实践(html5的localStorage和ie的userData)的实例页面
  10. linux/bsd四大防火墙我们选择谁