stringbuilder

赫夫曼编码

倾然丶 夕夏残阳落幕 提交于 2020-02-12 13:30:13
赫夫曼编码用于数据文件的压缩,压缩率在20%~90%之间,称之为最佳编码 将原始数据转换为ASCII编码后再转二进制属于定长编码 同样数据使用变长编码,按照各个字符出现次数进行编码,出现次数越多则编码越小(字符的编码都不能是其他字符编码的前缀,这样的编码叫做前缀编码),从而实现数据的压缩 步骤:和创建赫夫曼树一样,其数据重复出现的次数作为权值,向左的路径为0,向右的路径为1,采取不一样的排序方式,编码也是不一样的,但是最后WPL是相同的,都是最小 理论上来说赫夫曼编码的压缩率重复数据出现的越多压缩率则越高,相反次之 import java.io.*; import java.util.*; public class HuffmanCode { public static void main(String[] args) { String content = "i like like like java do you like a java"; byte[] contentBytes = content.getBytes(); byte[] huffmanCodesBytes = huffmanZip(contentBytes); // System.out.println(Arrays.toString(huffmanCodesBytes) + " " +

JavaSE学习笔记(8)---常用类

北城以北 提交于 2020-02-11 22:38:01
JavaSE学习笔记(8)---常用类 1、Object类 java.lang.Object 类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。 如果一个类没有特别指定父类,那么默认则继承自Object类。例如: public class MyClass /*extends Object*/ { // ... } 根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。最常用的是其中的2个: public String toString() :返回该对象的字符串表示。 public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。 toString方法 public String toString() :返回该对象的字符串表示。 toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。 由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。 覆盖重写 如果不希望使用toString方法的默认行为,则可以对它进行覆盖重写。例如自定义的Person类: public class Person { private String name

剑指offer系列:替换空格

眉间皱痕 提交于 2020-02-11 06:50:31
描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 代码 public class Solution { public String replaceSpace ( StringBuffer str ) { StringBuilder stringBuilder = new StringBuilder ( "" ) ; int x = 0 ; for ( int i = 0 ; i < str . length ( ) ; i ++ ) { if ( str . charAt ( i ) != ' ' ) { stringBuilder . append ( str . charAt ( i ) ) ; } else { stringBuilder . append ( "%20" ) ; } } return stringBuilder . toString ( ) ; } } 来源: CSDN 作者: 李亚飞的博客 链接: https://blog.csdn.net/qq_34691097/article/details/104253759

刷题第五天

♀尐吖头ヾ 提交于 2020-02-10 23:00:31
昨天由于某种不便说原因,没刷道题。 今天也是如此,但是想着上次还欠着一个东西没有说清楚,于是特定上来学习。 string、stringbuffer和stringbuilder 在上次的题目中,作者使用了string来存储数据,虽然通过了,但结果并不理想。作者学习了排名靠前的方法,发现他们都是用的stringbuilder方法,于是今天特开一个文章来说明这三者之间的关系。 首先,他们有一个很明显的区别就是,string是不可变的,而stringbuffer和stringbuilder是可变的。看到这个或者大家会很疑惑,明明代码中用到了temp = temp + num。具体来说,这个语句是开辟了三次内存空间了,不仅造成了空间浪费,还拖慢了速度。换一种说法,java中对string的操作就是不断创建新对象和回收旧对象的过程,所以非常慢。而stringbuffer和strignbuilder都是可变的。 第二个问题来了,stringbuffer和stringbuilder有什么区别呢? 具体来说,它们的区别主要体现在线程安全性上。stringbuffer对方法添加了同步锁,所以是安全的,但相对来说效率就比stringbuilder慢了。所以一般情况下,大家都会选择使用stringbuilder,除非在多线程的情况下会考虑stringbuffer。 对于这三种类型,各有各有好处

557. Reverse Words in a String III

寵の児 提交于 2020-02-08 00:12:04
Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order. Example 1: Input: "Let's take LeetCode contest" Output: "s'teL ekat edoCteeL tsetnoc" Note: In the string, each word is separated by single space and there will not be any extra space in the string. class Solution { public String reverseWords(String s) { String[] arr = s.split(" "); StringBuilder sbb = new StringBuilder(); for(int i = 0; i < arr.length; i++){ StringBuilder sb = new StringBuilder(arr[i]); sbb.append(sb.reverse().toString()).append(

How to append single quotes into both side of stringBuilder object in java

大憨熊 提交于 2020-02-07 21:45:54
问题 I would like to add single quotes into an array of string. If I has 5 values.(1,2,3,4,5). I need like this '1','2','3','4','5' I have tried some like below but I am getting error public class Main() { StringBuilder values=new StringBuilder(); values=getValues(1); System.out.println(values.toString()); public StringBuilder getValues(int productid){ StringBuilder Variable_1=new StringBuilder(); Variable_1=get(productid); return Variable_1.deleteCharAt(Variable_1.length()-1); } public static

JAVA的StringBuilder类

北战南征 提交于 2020-02-07 02:02:51
构造方法 public class Demo01StringBuilder { public static void main ( String [ ] args ) { //无参构造 StringBuffer bu1 = new StringBuffer ( ) ; System . out . println ( "bu1:" + bu1 ) ; // " " //带字符串的构造 StringBuilder bu2 = new StringBuilder ( "abc" ) ; System . out . println ( "bu2:" + bu2 ) ; //bu2:abc } 常用方法append public class Demo02StringBuilder { public static void main ( String [ ] args ) { //创建StringBuilder对象 StringBuilder bu = new StringBuilder ( ) ; //使用append方法往StringBuilder中添加数据 //append方法返回的是this,调用方法的对象bu,this==bu // StringBuilder bu2 = bu.append("abc");//把bu的地址赋值给了bu2 // System.out.println

String字符串性能优化的几种方案

心已入冬 提交于 2020-02-06 20:16:10
String字符串是系统里最常用的类型之一,在系统中占据了很大的内存,因此,高效地使用字符串,对系统的性能有较好的提升。 针对字符串的优化,我在工作与学习过程总结了以下三种方案作分享: 一.优化构建的超大字符串 验证环境:jdk1.8 反编译工具:jad 1.下载反编译工具jad,百度云盘下载: 链接:https://pan.baidu.com/s/1TK1_N769NqtDtLn28jR-Xg 提取码:ilil 2.验证 先执行一段例子1代码: public class test3 { public static void main ( String [ ] args ) { String str = "ab" + "cd" + "ef" + "123" ; } } 执行完成后,用反编译工具jad进行反编译:jad -o -a -s d.java test.class 反编译后的代码: // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) annotate // Source File Name: test.java package

StringBuilder和StringBuffer的区别

て烟熏妆下的殇ゞ 提交于 2020-02-06 11:16:46
一、String简单介绍 今天就简单的介绍一下String、StringBuilder、StringBuffer的区别,并没有深入的了解底层原理,不过用来面对面试还是可以的。 首先来看String的源码: Java 提供了 String 类来创建和操作字符串。从源码可以看到String是被final修饰的所以String是不可被继承的,一经声明不得修改,所有的方法都是final方法。同时它还实现了Serializable、CharSequence、 Comparable接口。String是由字符数组组成的。所以一些常用的字符串基本操作不推荐使用String去完成。String并不是Java的8大基本类型之一,这一点很重要。 二、字符连接 “ ”是java提供的双元运算符。可用来连接字符串。 public static void main(String[] args) { String str = "iFillDream"; System.out.println(str 2017); } 如果项目需要频繁连接字符串时,这种方法就不太明智。接下来通过对比实验来测试以下String、StringBuilder、StringBuffer的速度; public static void testStringAdd(){ long startTime = System.nanoTime();

String字符串性能优化的几种方案

此生再无相见时 提交于 2020-02-04 14:53:24
String字符串是系统里最常用的类型之一,在系统中占据了很大的内存,因此,高效地使用字符串,对系统的性能有较好的提升。 针对字符串的优化,我在工作与学习过程总结了以下三种方案作分享: 一.优化构建的超大字符串   验证环境:jdk1.8   反编译工具:jad 1.下载反编译工具jad,百度云盘下载: 链接:https://pan.baidu.com/s/1TK1_N769NqtDtLn28jR-Xg 提取码:ilil 2.验证 先执行一段例子1代码: 1 public class test3 { 2 public static void main(String[] args) { 3 String str="ab"+"cd"+"ef"+"123"; 4 } 5 } 执行完成后,用反编译工具jad进行反编译:jad -o -a -s d.java test.class 反编译后的代码: 1 // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. 2 // Jad home page: http://www.kpdus.com/jad.html 3 // Decompiler options: packimports(3) annotate 4 // Source File Name: test.java 5