自定义StringBuilder类拼接非空字符串
主要目的: 为了拼接多个非空字符串,还能达到链式的装X效果
这里不考虑线程安全,所以使用StringBuilder快速拼接非空内容,中间用","作为分隔。 代码如下:
package com.baidu;
import org.apache.commons.lang.StringUtils;
import org.junit.Test; public class MyStringBuilder {
private StringBuilder sb;
private Thread thread;
public MyStringBuilder() {
this.thread = Thread.currentThread ();
//判断放在放在构造函数中
if (sb == null) {
sb = new StringBuilder ();
}
} public StringBuilder getSb() {
return sb;
} public MyStringBuilder setSb(StringBuilder sb) {
this.sb = sb;
return this;
} //item为空不拼接
public MyStringBuilder append(String item) {
if (this.thread != Thread.currentThread ()) {
throw new RuntimeException ("不能在多线程中使用");
} if (StringUtils.isNotBlank (item)) {
if (sb.length () > 0) {
sb.append (",");
}
sb.append (item);
}
return this;
} //不暴漏get方法,直接用类实例toString()
public String toString() {
//清空缓存并返回sb里的数据
String var1 = sb.toString ();
sb.delete (0, sb.length ());
return var1;
} @Test
public void test() {
MyStringBuilder mySb = new MyStringBuilder ();
mySb.append ("aaa").append ("bbb").append ("ccc");
System.out.println ("mySb :" + mySb.toString ()); MyStringBuilder mySb2 = new MyStringBuilder ();
mySb2.append ("aaa2")
.append ("bbb2")
.append ("ccc2");
System.out.println ("mySb2 :" + mySb2.toString ()); //测试不能再多线程使用异常
new Thread (() -> {
mySb.append ("rr");
}).start ();
}
}
自定义StringBuilder类拼接非空字符串的更多相关文章
- C#--数组、字符与字符串--StringBuilder类、字符与字符串、字符及转义字符
C#--数组 字符与字符串--StringBuilder类 字符与字符串 字符及转义字符
- 字符串处理总结之二(C#StringBuilder类)
动态串StringBuilder 与String类相比,System.Text.StringBuilder类可以实现动态字符串.此外,动态的含义是指在修改字符串时,系统不需要创建新的对象,不会重复开辟 ...
- 关于JavaScript中0、空字符串、'0'是true还是false的总结
最近被问到关于js中空字符串是true还是false得问题,一时间没想起来,现在在chrome的console面板上输出代码测试一下. "" == false 结果是true ...
- Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式
一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...
- 动态字符串 Stringbuilder类
StringBuilder动态字符串 string 类型的修改会浪费资源,如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类, stringbuild ...
- java常用类与包装类--常用类字符串String类、StringBuffer类、Stringbuilder类
1.String类 1.1String类的概念和储存结构: (1)字符串是一个比较特殊的对象,可以使用new,也可以不使用new来创建字符串对象 String s1 = new String(&quo ...
- 解决CsvWriter:中文乱码、末尾行多一行空格(/r)、非第一列空字符串""显示null问题
一:主要内容 解决CsvWriter存csv,csv文件打开后中文乱码问题 解决CsvWriter存csv,csv文件最后一行总是多一行空行的问题 解决CsvWriter存csv,csv文件不是第一列 ...
- 数据结构和算法 – 4.字符串、 String 类和 StringBuilder 类
4.1.String类的应用 class String类应用 { static void Main(string[] args) { string astring = "Now is The ...
- linux环境判断字符串是否为非空
需求描述: 今天帮同事调整脚本,涉及到判断一个字符串为非空的,在此记录下. 操作过程: 通过-n来判断字符串是否为非空,如果为非空那么就是真 #!/bin/bash Str1='MyTest' if ...
随机推荐
- Aliyun 安装NPM 总是3.5.2 解决方案
由于默认的命令 阿里云安装的 Node 是 8.x 版本 导致NPM 一直安装的都是 3.5.2 版本,死活升级不上去 最后手动安装指定版本解决 wget -qO- https://deb.nodes ...
- (转)在Source Insight中看Python代码
http://blog.csdn.net/lvming404/archive/2009/03/18/4000394.aspx SI是个很强大的代码查看修改工具,以前用来看C,C++都是相当happy的 ...
- RCC, Reset and Clock Control
- 拾遗:Perl 在 Shell 脚本编程中的应用
Perl 对我用途,仅是作为 Shell 脚本中的文本处理器:在较大的软件工程里,更多的是使用 C.go 等编译型语言. Perl 是一种历史比较悠久的动态编程语言,在各种类 Unix 系统中得到了应 ...
- Ulimit 文件配置
cat /etc/security/limits.confsudo vim /etc/security/limits.conf * hard nofile 999999 * soft nofile 9 ...
- 11-MySQL-Ubuntu-数据表中数据的删除(四)
数据的删除(delete) (1)物理删除(不可逆,公司不会采取这种方法,如现在一般不会出现注销,数据具有无限价值) 删除整张表的数据!!! delete from 表名; 删除部分给定条件的数据: ...
- 牛客CSP-S提高组赛前集训营1
牛客CSP-S提高组赛前集训营1 比赛链接 官方题解 before:T1观察+结论题,T2树形Dp,可以换根或up&down,T3正解妙,转化为图上问题.题目质量不错,但数据太水了~. A-仓 ...
- C++之指针与数组区别
C++/C程序中,数组要么在静态存储区被创建(如全局数组),要么在栈上被创建.数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变.指针可以随时指向任意类型的内存 ...
- CF982F The Meeting Place Cannot Be Changed
题意:给你一张有向图,某人会任意选择起点然后走无穷多步,问是否存在一个点(要求输出)不管他起点在何处怎么走都必经?n<=100005,m<=500005. 标程: #include< ...
- Java 虚拟机 - GC机制
GC机制的一些总结 https://blog.csdn.net/super_qing_/article/details/85263991 https://blog.csdn.net/yhyr_ycy/ ...